npm react-barcodes 打印条码
npm react-barcodes print barcode
我正在尝试从 reactjs 打印条码到 zebra 打印机。
我使用 npm 包 react-barcodes 生成条形码,然后在下面尝试 post 进行打印,但条形码不正确。
How to print a react-barcode component
有人成功了吗?
function Barcode(ref) {
const { inputRef } = useBarcode({
value: ref.barId,
options: {
format: "ean13",
flat: true,
height: 60,
width: 1.2,
fontSize: 18
}
});
return <canvas id="barcode-canvas" ref={inputRef}/>;
};
然后终于使用打印功能
const opt = {
scale: 4
}
const elem = document.getElementById("barcode-canvas");
html2canvas(elem, opt).then(canvas => {
const iframe = document.createElement('iframe')
iframe.name = 'printf'
iframe.id = 'printf'
iframe.height = 0;
iframe.width = 0;
document.body.appendChild(iframe)
const imgUrl = canvas.toDataURL({
format: 'jpeg',
quality: '1.0'
})
const style=`
height:100vh;
width:100vw;
position:absolute;
left:0:
top:0;
`;
const url = `<img style="${style}" src="${imgUrl}"/>`;
var newWin = window.frames["printf"];
newWin.document.write(`<body onload="window.print()">${url}</body>`);
newWin.document.close();
});
条形码打印出低分辨率,并且只打印了条形码的一小部分。不知道是打印功能还是打印机设置。
条形码打印出低分辨率,并且只打印了条形码的一小部分。不知道是打印功能还是打印机设置问题
这是由于条形码的呈现方式和使用的方法造成的。
我改为使用 svg 然后用它来下载条形码:
onPrintBarcode = () => {
var container = document.getElementById("div-svg");
var mySVG = document.getElementById("barcode-canvas");
var width = "100%";
var height = "100%";
var printWindow = window.open('', 'PrintMap',
'width=' + width + ',height=' + height);
printWindow.document.writeln(container.innerHTML);
printWindow.document.close();
printWindow.print();
printWindow.close();
}
这对我有用。
我正在尝试从 reactjs 打印条码到 zebra 打印机。
我使用 npm 包 react-barcodes 生成条形码,然后在下面尝试 post 进行打印,但条形码不正确。
How to print a react-barcode component
有人成功了吗?
function Barcode(ref) {
const { inputRef } = useBarcode({
value: ref.barId,
options: {
format: "ean13",
flat: true,
height: 60,
width: 1.2,
fontSize: 18
}
});
return <canvas id="barcode-canvas" ref={inputRef}/>;
};
然后终于使用打印功能
const opt = {
scale: 4
}
const elem = document.getElementById("barcode-canvas");
html2canvas(elem, opt).then(canvas => {
const iframe = document.createElement('iframe')
iframe.name = 'printf'
iframe.id = 'printf'
iframe.height = 0;
iframe.width = 0;
document.body.appendChild(iframe)
const imgUrl = canvas.toDataURL({
format: 'jpeg',
quality: '1.0'
})
const style=`
height:100vh;
width:100vw;
position:absolute;
left:0:
top:0;
`;
const url = `<img style="${style}" src="${imgUrl}"/>`;
var newWin = window.frames["printf"];
newWin.document.write(`<body onload="window.print()">${url}</body>`);
newWin.document.close();
});
条形码打印出低分辨率,并且只打印了条形码的一小部分。不知道是打印功能还是打印机设置。
条形码打印出低分辨率,并且只打印了条形码的一小部分。不知道是打印功能还是打印机设置问题
这是由于条形码的呈现方式和使用的方法造成的。
我改为使用 svg 然后用它来下载条形码:
onPrintBarcode = () => {
var container = document.getElementById("div-svg");
var mySVG = document.getElementById("barcode-canvas");
var width = "100%";
var height = "100%";
var printWindow = window.open('', 'PrintMap',
'width=' + width + ',height=' + height);
printWindow.document.writeln(container.innerHTML);
printWindow.document.close();
printWindow.print();
printWindow.close();
}
这对我有用。