Printing 使用CUPS中的原始ascii打印到点阵打印机

Printing 使用CUPS中的原始ascii打印到点阵打印机,printing,terminal,ascii,cups,dot-matrix,Printing,Terminal,Ascii,Cups,Dot Matrix,请原谅我的生疏——我还没有找到一个有效的答案。可能是因为我不懂语法,或者可能是因为我的打印机不能正常工作 我正在尝试使用cups将一个ASCII文件从mac打印到松下KX-P1150。在终端I类型中: lp-o原始文件名.txt 它是有效的。然而,我想选择一个更高的音高(更小的点大小),这显然可以通过告诉打印机ESC-g来完成 微米间距 将打印设置为每英寸15个字符(每行最多120个字符) 我想做的是将ESC-g嵌入到我的文本文件的顶部,大概是十六进制,但无论我使用什么语法,打印机都只打印命令而

请原谅我的生疏——我还没有找到一个有效的答案。可能是因为我不懂语法,或者可能是因为我的打印机不能正常工作

我正在尝试使用cups将一个ASCII文件从mac打印到松下KX-P1150。在终端I类型中:

lp-o原始文件名.txt

它是有效的。然而,我想选择一个更高的音高(更小的点大小),这显然可以通过告诉打印机ESC-g来完成

微米间距 将打印设置为每英寸15个字符(每行最多120个字符)

我想做的是将ESC-g嵌入到我的文本文件的顶部,大概是十六进制,但无论我使用什么语法,打印机都只打印命令而不更改其设置

我已经尝试过\x1b,,[,和其他一些方法。也许这真的很简单,有人可以让我直接了解语法

非常感谢您抽出时间。

更新

linuxquestions.org的一位“keefaz”提出了一个建议,解决了这个问题:

echo $'\eg' > code.txt
cat code.txt filename.txt > print.txt
lp -o raw print.txt
我相信这就是您正在寻找的(ESC/p)代码:

printf "\x1b@\x1bM\x1b2\x1bI\x01\x1bQ`" | nc lp1 9100
这在安装了nc(netcat)的CentOS机箱上进行了测试。代码说明:

\x1b@ - Init Printer
\x1bM - CPI=12 (option \x1bP CPI=10)
\x1bI\x01 - set left margin to column 1
\x1bQ` - set right margin to column 96
假设lp1(lp1.example.net)是JetDirect(或兼容)打印队列上的网络打印机,端口9100处于打开状态(并且是主机文件中的一个条目)。我没有尝试过在不通过cups的情况下通过JetDirect上的端口21或515队列打印

如果它不在网络上,您可以尝试通过并行(lp0)、串行(/dev/ttySx其中x是串行设备位置[1-9])或usb0直接对其进行管道连接


请详细说明打印机的模拟模式。我记得,Printronix有一个本机模式、一个IBM ProPrinter II模式和一个Epson ESC/P模式。这看起来很像Epson ESC/P。另外,我在让打印机(OKI)完成工作时遇到了一些问题,所以我不得不向它发送一组NUL(0xff)(256?1024k?),尤其是当页面上的最后一个内容是IMB(智能邮件条形码)位图时。
\x1b@ - Init Printer
\x1bM - CPI=12 (option \x1bP CPI=10)
\x1bI\x01 - set left margin to column 1
\x1bQ` - set right margin to column 96
printf "\x1b@\x1bM\x1b2\x1bI\x01\x1bQ`" | usb0