使用JSBarcode库无法正确打印条形码

时间:2018-10-26 13:21:11

标签: javascript html css printing jsbarcode

我正在尝试打印生成的条形码。我正在使用JSBarcode库生成条形码。

在打印屏幕上,视觉效果很好,但是当我打印时,结果是4页,只有一页有条形码,而条形码很少且位于页面底部。

我的html代码是:

<div class="col-12 col-print-12">
   <p class="barcode tekli">
      <svg id="barcode tekli"></svg>
   </p>
</div>

我的JS代码是:

JsBarcode("#barcode", "1554466", {
    width:5,
    height:200,
    fontSize:50,
    displayValue: true
});

window.print();

window.open('', '_parent', '');

window.close();

我的CSS是:

@media print {
    .tekli{
        -webkit-transform: scaleX(2);
        -o-transform: scaleX(2);
        -ms-transform: scaleX(2);
        transform: scaleX(2);
    }
    .page {
        width: 21cm;
        height: 29.7cm;
        margin: 0;
        border: initial;
        border-radius: initial;
        width: initial;
        min-height: initial;
        box-shadow: initial;
        background: initial;
        page-break-after: always;
    }
    .col-print-12 {
        width: 100%;
    }
}

你能帮我吗?

2 个答案:

答案 0 :(得分:1)

尝试一下

$(document).ready(function(){
    JsBarcode("#barcode", "1554466",{
        width:5,
        height:200,
        fontSize:50,
        displayValue: true

    });

    window.print();

    window.open('', '_parent', '');

    window.close();
});

或删除svg标记,并替换为id =“ barcode”的简单div

let divDOM = document.getElementById("barcode");
let svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg.setAttribute('jsbarcode-format', 'ean13')
svg.setAttribute('jsbarcode-value', '<?php echo $product["ean"]; ?>')
svg.className.baseVal = "barcode";
divDOM.appendChild(svg);
JsBarcode("#barcode","Smallest width",{
    width: 1,
    height: 25,
    lineColor: "#676a6c"
}).init();

答案 1 :(得分:0)

您的代码中html / CSS进行了少量更改,对我来说工作正常。

我从svg中删除了ID tekli(不能有多个ID),并且还从CSS中删除了.tekli样式。

JsBarcode("#barcode", "1554466",{
    width:5,
    height:200,
    fontSize:50,
    displayValue: true

});

window.print();

window.open('', '_parent', '');

window.close();
	  @media print {
       
        .page {
            width: 21cm;
            height: 29.7cm;
            margin: 0;
            border: initial;
            border-radius: initial;
            width: initial;
            min-height: initial;
            box-shadow: initial;
            background: initial;
            page-break-after: always;
              }
             .col-print-12 {
            width: 100%;
             }
              }
<script src="https://cdn.jsdelivr.net/jsbarcode/3.3.7/JsBarcode.all.min.js"></script>
<div class="col-12 col-print-12">

            <p class="barcode tekli">
                <svg id="barcode"></svg>
            </p>

        </div>

您也可以here对其进行测试