ESC POS命令ESC *用于在打印机上打印位图

时间:2017-05-22 07:39:44

标签: printing escpos

我想用ESC POS命令ESC *打印位图徽标文件。 以下是该命令的技术文档的链接。

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

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

1 个答案:

答案 0 :(得分:6)

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库中的图像处理代码的实际原型。使用现有的库有很多好处,如果它是一个选项,你应该考虑它。