6

我正在创建一个基于 HTML5 画布的签名/绘图框。目前我们将服务器上的画布保存为PNG,但可以轻松地将base64字符串保存在数据库中。现在的问题是我们如何在打印的收据上包含签名。

目前我们使用 ^GF 字段来处理打印图像,但问题是 PNG 文件需要用于打印机的格式。我可以简单地包含 Base64 编码的字符串吗?还是应该将其转换为 ASCII 十六进制字符串?还是我真的应该先将其转换为位图?

我真的没有找到任何关于这台特定打印机是否处理 PNG 文件,甚至如何发送它们的文档。我发现的唯一信息是把它作为 B64 或 Z64 位图发送,但我看到到处都是发送 png 的引用。

4

1 回答 1

6

您需要发送的数据不是 PNG。您需要拍摄图像并将其转换为黑白并将数据发送到打印机。例如,如果您有一个 40x50 像素的图像,您将拍摄该图像,并去除颜色信息,这样您总共将拥有 2000 位数据。然后像 ^GFB,250,250,5,{2000 bits of data} 一样发送您的 ZPL。

我通过 2000 位 / 8(位 / 字节)得到 250 个字节,得到 250 个字节。我将 40 除以 8 得到 5。行数将自动计算。

在处理 Zebra 打印机时,我发现一些有用的东西是从位的角度来思考。所有图形都是在位级别上完成的。

请记住,您要发送的图像将根据打印机的 DPI 改变大小。一台 203 DPI 打印机将显示我的示例,尺寸约为 0.2 英寸 x 0.25 英寸。在 300 DPI 打印机上,它将显示大约 0.13 英寸 x 0.16 英寸。这是因为打印机只会将原始数据放在格式上,而 px 的数量就是图像的点数。

希望这有帮助!

参考文献:[1] ZPL Manuel,第 208 页(^GF 第 2 页)。

于 2012-03-15T19:44:53.313 回答