我希望能够让我的打印机(USB 上的 HP DeskJet 1280)打印出我迄今为止发送给它的所有光栅数据,而不会弹出页面。我只发送普通的光栅图形和光标定位命令——没有矢量图形,没有文本。
更准确地说,我有两个问题:
1) 将一些光栅数据发送到打印机后(使用 Transfer Raster Data ("\033*b%dW")),如何让它立即打印出来并停止,而不弹出页面?
2) 发送带有正参数的垂直光标定位命令后(例如,Vertical Cursor Positioning (Decipoints) ("\033&a%+dV")),如何使打印机立即将纸张前进到新位置并停在那里?
(请注意,即使只求解 (1) 也几乎足够了,因为可以通过发送适当高度的空白栅格间接地推进光标。)
由于 PCL 是一种页面描述语言,实际上不可能在如此低的级别上做事。但是在 PCL 文档和 Internet 中进行了广泛搜索之后,我也没有找到明确的否定答案。
打印机似乎有某种内部缓冲区来存储其数据,并且当它变得足够大时,它会刷新(即打印出)该缓冲区。如果有一个命令告诉打印机立即刷新该缓冲区而不做任何其他事情,一切都会好起来的。但是我没有找到这样的命令。甚至 "\033*rC" (End Raster Graphics) 也不会立即生效。
我正在使用 CUPS 的 USB 后端与打印机进行通信,并且已经验证(使用 usbmon)后端实际上一看到我的所有命令就将它们发送到打印机,所以这不是数据卡在的问题司机。
打印部分页面的命令包括,例如,“\033E”(打印机重置)、“\033%%-12345X”(通用退出语言)、“\033&r1F”(刷新所有页面(包括部分页面))——但是所有这些也会弹出部分页面。
有人可以建议一种聪明的方法来做我想做的事,或者确认我的印象,那就是这绝对不可能?