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