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

Barcode not printing correctly using JSBarcode library

我正在尝试打印生成的条形码。我正在使用 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%;
    }
}

你能帮帮我吗?

试试这个

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

    });

    window.print();

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

    window.close();
});

或删除 svg 标签并替换为简单的 div 和 id="barcode"

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();

你的代码稍作改动 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