我在做什么和尝试:

我正在尝试将

拍摄的屏幕截图转换为NodeJS中的ZPL字符串。非常类似于http://labelary.com/viewer.html,它将拍摄图像并输出ZPL代码。

我在做什么:


我正在使用一个名为“ domToImage”(https://github.com/tsayen/dom-to-image)的程序包,该程序包截取了我正在说明的DOM的屏幕截图。我当前正在使用domToImage.toBlob()函数,该函数然后返回Blob {size:102776,键入:“ image / png”}。
为了测试它是否确实有效,我使用了'FileSaver'(https://www.npmjs.com/package/file-saver)将文件另存为PNG,它确实有效并且图片看起来很棒!


这是我正在做的简单示例代码

domtoimage.toBlob(document.getElementById('labelInfo'))
.then(function (blob)
{
    console.log(blob)
    saveAs(blob, "test.png");
});


我想做的是将“ blob”转换为ZPL字符串或格式,以便可以将其发送到网络中的打印机。



我试过的

A)我尝试安装image-to-zpl(https://www.npmjs.com/package/image-to-zpl),但我想可能做错了,因为我无法像安装其他模块一样要求它,但出现错误提示:无法查找模块“ image-to-zpl”的声明文件。 “ /path/to/node_modules/image-to-zpl/index.js”隐式具有“ any”类型。我什至尝试使用import代替require,但是没有运气。

B)我在Java(http://www.jcgonzalez.com/java-image-to-zpl-example)中找到了一个代码,但是我几乎一无所知,也不知道如何将应用程序中的数据发送到Java文件中,然后使用NodeJS将字符串返回给应用程序(我是个菜鸟)。

C)我研究了Labelarys API,但所做的只是将ZPL转换为PDF或PNG,但不幸的是,反之亦然。

D)考虑使用zbtprinter(https://github.com/bstmedia/zbtprinter/),因为它实际上具有我需要的功能,但是不幸的是,它将直接使用蓝牙将其发送到打印机,而不输出ZPL,在我的情况下,由于打印机没有ZPL,因此无法使用ZPL有蓝牙。它在网络上。我仍然还必须学习如何通过网络将整个字符串直接发送到打印机:/



我迫切需要帮助的人



编辑

这就是我在HTML中所做的事情:

<div style="width: 1000px" class="labelInfo" id="labelInfo">
   <img src="images/template.bmp" style="max-width: 100%; max-height: 100%">
   <div class="ref"> {{ referenceNumber }} </div>
   <div class="serial">{{ serialNumber }}</div>
   <div class="date" id="date">{{ yearMonth }}</div>
   <canvas class="qr" id="canvas"></canvas>
</div>


说明:我使用的是带有所有徽标的图像模板,其中的徽标的空白部分被3个div填充;我有3个div,根据用户输入,这些字段将放置在图像模板内的指定位置;画布用于根据序列号的内容放置QR码。

当用户单击按钮时,后端代码然后拍摄整个'labelInfo'div的图像,然后将其转换为ZPL以便发送给打印机(这是我想要实现的目标)

最佳答案

将通用图像转换为ZPL可用的图像并非易事,无法在几行伪代码中描述。相反,我已经将这段代码搁置了一段时间,您的问题促使我对其进行清理并使其可用:

https://github.com/metafloor/zpl-image

要么

npm安装zpl-image

在浏览器和node.js中均可使用。在浏览器中,您传入<img><canvas>元素,并以ZPL使用的Z64压缩GRF格式取回渲染的图像。

ZPL用于打印图像,而对于斑马打印机则无其他要求:

// image is a <img> or <canvas>
let res = imageToZ64(image);

let zpl = `
^XA^LH0,0^FWN^PON^PMN^LRN
^FO10,10^GFA,${res.length},${res.length},${res.rowlen},${res.z64)
^XZ`;

09-25 22:28