2017-05-22 111 views
0

我想用ESC POS命令ESC *打印位图标志文件。 以下是命令技术文档的链接。ESC POS命令ESC *用于在打印机上打印位图

https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=88

据我来说,打印机需要在0和1的形式的图像数据。因此,它打印一个点,出现1和空白,发生0。 但我无法弄清楚如何在上述命令的帮助下发送多行位图像数据,因为该命令仅接受图像数据在水平方向上。请帮我解决这个问题。

回答

2

ESC *是ESC/POS中的几个“位图”命令之一。它接受“列格式”数据,它只能表示一行8或24像素的单行。所以这里有两个很好的选择。

打印多行使用ESC *

这听起来像你能够打印一行,所以我会假设数据格式本身不是一个问题。

您可以通过简单地重复打印多余行的命令来打印多行,并用换行符\n分隔。这需要剪切图像,并使用空格填充图像,使其成为8或24像素高度的倍数(再次,由于格式)。

由于行间距,您需要发出一个命令来更改图像打印期间换行符的大小,然后是另一个命令以在最后重置它们。

我使用ESC 3 0x10来重置16单元换行(字节0x1b 0x33 0x10)和ESC 2(字节0x1b 0x32)。

这种打印方法与旧打印机的优异的相容性,但你可以在输出一些细的水平线。

打印与GS v 0

整个图像,该位图像命令接受不同的“栅格格式”的数据。我使用这种格式的blob与广泛使用的PBM位图格式(特别是带有P4标头的文件中的二进制数据)中的二进制数据相同的事实。

图像的高度将受到打印缓冲区大小的限制,但可能会高达65535像素。由于表示,宽度必须可以被8整除。

旁注:这些片段的,现在出现在流行的开源escpos-phppython-escpos库中的图像处理代码中的实际原型。使用现有的库有很多好处,如果它是一个选项,您应该考虑它。