0

请原谅我的新手 - 我还没有找到一个有效的答案。可能是因为我不懂语法,也可能是因为它不能很好地与我的打印机配合使用。

我正在尝试使用杯子将 ASCII 文件从 mac 打印到松下 KX-P1150。在终端 I 中键入:

lp -o 原始文件名.txt

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

MICRON PITCH 将打印设置为每英寸 15 个字符(每行最多 120 个字符)。

Name:   ESC     g
Dec.:   27      103
Hex.:   1B      67

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

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

非常感谢您的时间。

4

2 回答 2

1

我相信这是您正在寻找的(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 打开(以及 hosts 文件中的一个条目)。我没有尝试通过端口 21 或 JetDirect 上的 515 队列打印而不通过杯子。

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

printf "\x1b@\x1bM\x1b2\x1bI\x01\x1bQ`" | usb0
于 2018-12-21T21:23:17.440 回答
0

更新。

来自 linuxquestions.org 的一位 'keefaz' 提出了解决此问题的建议:

echo $'\eg' > code.txt
cat code.txt filename.txt > print.txt
lp -o raw print.txt
于 2018-02-17T20:32:08.010 回答