【发布时间】:2021-02-19 16:03:43
【问题描述】:
我有一个连接到 chrome 的 WEBUSB 打印机,它可以打印从我的 Angular 应用程序发送的数据。 我能够使用 ngx-barcode 以 SVG 的形式创建 BARCODE。但是我应该以哪种格式将其发送到 USB 打印机。我尝试了以下方式。但它会打印一些特殊字符文本。
const barcodeSvg = this.barcodeElm.bcElement.nativeElement.querySelector('svg');
const serializer = new XMLSerializer();
const svgXmlString = serializer.serializeToString(barcodeSvg);
const typedArraySvg = Uint8Array.from(Array.prototype.map.call(svgXmlString, c => c.charCodeAt(0)));
this._service.printBarcode(typedArraySvg);
而我的 printBarcode 函数是
this.device.transferOut(1, printdata)
.catch(error => {
console.log('Failed to print', error);
});
任何帮助将不胜感激。
【问题讨论】:
-
我建议的另一种方法是创建一个 Blob/File (developer.mozilla.org/en-US/docs/Web/API/Blob/Blob#example),然后使用 FileReader 轻松将其转换为 BufferArray
-
@Sergey 感谢您的评论。我有一个要通过 transferOut() 发送的画布/SVG。需要编码吗?该怎么做?
-
从您的 SVG 创建一个文件/Blob,使用它作为源字符串。使用 FileReader 将文件读取到 BufferArray 并将其提供给您的打印方法