我正在创建一个基于HTML5画布的签名/绘图框。目前,我们将画布作为PNG保存在服务器上,但可以轻松地将base64字符串保存在数据库中。现在的问题是我们如何在打印的收据上包含签名。
目前我们使用^ GF字段来处理打印图像,但问题是PNG文件需要用于打印机的格式。我可以简单地包含Base64编码的字符串吗?或者我应该将其转换为ASCII十六进制字符串?或者我应该先将它转换为位图吗?
我并没有真正找到有关此特定打印机是否处理PNG文件,甚至是如何发送它们的文档。我发现的唯一信息是将其作为B64或Z64位图发送,但我看到了在任何地方发送png的参考。
答案 0 :(得分:6)
您需要发送的数据不是PNG。您需要拍摄图像并将其转换为黑白图像并将数据发送到打印机。例如,如果您有一个40x50px的图像,则可以拍摄图像,并去掉颜色信息,这样您就可以获得总共2000位的数据。然后像^ GFB,250,250,5,{2000位数据}一样发送你的ZPL。
我通过获取2000位/ 8(位/字节)来获得250个字节。我将40除以8得到5.行数将自动计算。
在处理Zebra打印机时,我觉得有用的东西是用比特来思考。所有图形都在一个位上完成。
请记住,您要发送的图像将根据打印机的DPI更改大小。 203 DPI打印机将在大约.2英寸x .25英寸处显示我的示例。在300 DPI打印机上,它将显示大约.13英寸x16英寸。这是因为打印机只是将原始数据放在格式上,而px的数量是图像的点数。
希望这有帮助!
参考文献: [1] ZPL Manuel,第208页(^ GF page2)。