如何打印位图像TM-T88V

嗨伙计们我有下一个问题我不能打印我的位图像没有白线每24行。 即我需要打印图像,但这个图像每24行到位有白线。

epson打印机将图像打印到下一格式。

>line 23 01010101000010001010 >line 24 00001000100000000110 >line 25 --------- white line ------------ 

怎么能删除这该死的白线?

  Image size width:400px height:73px while (offset < height) { //format ESC* Epson printer String modIMG = new String(new byte[]{0x1B, 0x2A, 33, 0, 2}); img.append(modIMG); for (int x = 0; x < width; ++x) { for (int k = 0; k < 3; ++k) { byte slice= 0; for (int b = 0; b < 8; ++b) { int y = (((offset / 8) + k) * 8) + b; int i = (y * width) + x; boolean v = false; if (i < bitSet.length()) { v = bitSet.get(i);} slice |= (byte) ((v ? 1 : 0) << (7 - b)); } img.slice(new String(new byte[] {slice})); } } offset += 24; img.append(new String(new String(new byte[]{0x1B,0x33,30})); } 

谢谢,挺进!

所以我解决了这个问题。 使用ESC’3’24将行间距设置为24点是不够的,但您必须以页面模式打印图像。

进入页面模式:ESC’L’

然后你必须使用ESC’W’设置图像区域,这里我用C表示:

  h2 = h * 2 + 30; /* Set the printing area, h * 2 because of double density */ seq[0] = 0x1b; seq[1] = 'W'; seq[2] = 0; /* xl */ seq[3] = 0; /* xh */ seq[4] = 0; /* yl */ seq[5] = 0; /* yh */ seq[6] = 0; /* dxl */ seq[7] = 2; /* dxh */ seq[8] = h2 % 256; /* dyl */ seq[9] = h2 / 256; /* dyh */ if (write(fd, seq, 10) != 10) goto finish; 

现在发送图像数据,最后打印发送0x0c,这也使打印机返回标准模式。

通过使用页面模式,图像上的白色条纹消失了。

顺便说一句,这似乎是EPSON TM-T88打印机的一个奇怪之处,我在TM-T500A和Aures打印机上都看不到这些白线。 在这些打印机上,我可以使用标准模式打印图像。

我解决了它设置页面模式跟随Marc Balmer的例子,但必须发送24 * 2点(行高双倍密度)的feed以使其工作:因此在每个数据片段发送命令ESC J n bytes {27, 74, 48} 。 终于搞定了!

希望能帮助到你!

参考(必须记录)

尝试在打印前发送ESC / POS命令(0x1B,’3’,24)。 这会将行间距设置为24点而不是默认值30。

为了确认其他人的建议,我成功地使用“ ESC30 ”删除了数据条带之间的白线。 您可以在此处查看实际代码(Haskell)和结果 。

Interesting Posts