2012-03-13 76 views
5

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

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

我并没有真的找到任何文档关于这个特定的打印机是否处理PNG文件,甚至如何发送它们。我发现的唯一信息是将其作为B64或Z64位图发送,但我看到了在任何地方发送png的参考。

+0

我认为您需要提供更多关于如何将其发送给打印机的详细信息。通过API?或者,如果在浏览器中查看收据,则在打印时,浏览器将负责将图像发送到打印机。当然,你可能想对硬件进行测试,以确保你不会超出打印区域的大小。 – AaronLS 2012-03-13 22:23:57

+0

斑马打印机具有令人难以置信的模糊专有数据格式。尝试转换图像格式太多了,只需使用Windows打印机驱动程序即可领先。 PrintDocument在你的代码中。 – 2012-03-14 00:23:11

+0

有没有什么办法可以将XML转换为.lbl,看看实际得到的是什么? – cDecker32 2012-03-14 15:28:40

回答

5

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

我得到250通过采取2000位/ 8(位/字节)来获得250字节。我将40除以8得到5.行数将自动计算。

我在处理斑马打印机时发现有用的东西是根据位来思考。所有图形都是在一定程度上完成的。

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

希望得到这个帮助!

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

+0

我真的来这里发布,我昨晚发现了这个,但你赢了先生。我最终通过玩弄指定原始图像文件的数字来了解它。 现在的问题是如何在C#中将RGB PNG缩减为双色调tiff /位图。 – cDecker32 2012-03-16 13:13:50

+0

我发现真的很快: 'System.Drawing.Bitmap b = new System.Drawing.Bitmap(“c:\\ test.jpg”);' 'System.Drawing.Bitmap b0 = CopyToBpp(b,1) ;' 我在这里发现:http://www.wischik.com/lu/programmer/1bpp.html。 – Ethan 2012-03-16 15:48:53

+0

是的,我在这一天的工作过程中,现在唯一的问题是某种抵消问题。很可能是因为我从一个bmp转换而来。我只需要弄清楚这个东西正在寻找什么样的文件头... – cDecker32 2012-03-16 21:52:02