我有一个Zebra GK420d通过CUPS连接到OS X。然而,当我向它发送用ZPL或EPL编写的文件时,它们只以纯文本打印。
我需要在打印机上切换到模式吗?
与其他人所说的相反,您不需要专门添加原始队列。
相反,您可以使用-o raw
开关将原始文件提交到任何队列:
lpr -P CupsPrinterName -o raw path/to/label.zpl
打印机名称可以通过CUPS:中的链接找到
http://localhost:631/printers/
这也适用于其他使用CUPS的平台,如Linux。
您可以使用lpadmin创建一个原始CUPS队列。这是我使用的命令行:
lpadmin -p Zebra -E -v usb://Zebra%20Technologies/ZTC%20LP%202824%20Plus?serial=XXXXXX -m raw
您也可以使用的CUPS网络管理员设置原始队列
http://127.0.0.1:631/
这是一个更全面的答案,因为我似乎每隔几年就会回到这个问题上。要在Linux中从命令行使用Zebra或其他条形码打印机进行打印,请执行以下步骤:
列出所有打印机目标并查找要使用的打印机:
$ lpinfo -v
network https
serial serial:/dev/ttyS0?baud=115200
serial serial:/dev/ttyS1?baud=115200
network lpd
direct hp
direct usb://GODEX/G500?serial=162203C6
network smb
...
添加新队列:
$ lpadmin -p godex -E -v usb://GODEX/G500?serial=162203C6 -m raw -o usb-unidir-default=true
如果您的打印速度较慢(需要很长时间才能启动),请确保您添加了-o usb unidir default=true。
检查可用队列:
$ lpstat -v
device for godex: usb://GODEX/G500?serial=162203C6
创建标签(文本文件):
根据您的打印机在EPL(Zebra)、ZPL(Zebra)、EZPL(Godex)中的要求创建一个文件。
警告,如果原始文件的长度小于512字节,某些CUPS版本可能会出现原始文件问题——较长的文件将打印,而较短的文件会打印一次,然后暂停几分钟(看起来内置了超时)。一个解决方法是添加注释以将其扩展到512字节的限制。
斑马文件(test.epl)示例:
N
A20,20,0,2,1,1,N,"text"
B20,40,0,1,1,1,30,N,"aaaa-bbbb-cccc"
P1
示例Godex文件(test.ezpl):
;set portrait orientation
^XSET,ROTATION,0
;set height 20mm
^Q20,1
;set width 64mm
^W64
;start label
^L
;AA=print out text with smallest font, x=20dots, y=20dots, magnificationx=0, magnificationy=0, gap=1dot, rotationInverse=0 (no)
AA,20,20,0,0,1,0,Some sample text
;BQ=code128, x=20dots,y=40dots,narrow_bar_width=1,wide_bar_width:2,height=30dots,rotation=0deg,readable=0(no)
BQ,20,40,1,2,30,0,0,1234-1243-43214-432141
;end label
E
推送打印机:
$ lpr -P godex test.ezpl
您需要避免任何过滤。使用CUPS界面中配置的RAW过滤器进行打印,或者默认情况下在lpadmin
语句中进行打印。您没有说明打印机是如何连接的,但如果是IP,您的目的地很可能是socket://ip.addr.ess:9100
。
我是一个PC爱好者,所以我不太了解CUPS,但我在PC上使用过zpl和epl,发现他们真的很喜欢获得原始打印文件。我总是做一个:filecopy"c:\zplfile.txt"\computername\printershare"类型命令。如果我只是想写一些文字的话,我也用过写字板。但对于标签和条形码,我想看看是否有办法将原始zpl或epl发送到打印机端口。希望这能有所帮助。
谢谢。我又看了一些。似乎在使用杯子时,您无法向打印机发送原始ZPL命令。就像我所做的那样,在cups中创建打印机作为套接字,并在9100上启动netcat侦听器,然后向打印机发出某种命令
nc -l localhost 9100
zpl_mine="^XA ~SD10 ^PW 850 ^MM T ^MN W ^JUS ^XZ,";echo $zpl_mine | nc localhost 9100 -w 1
这不会将信息发送到打印机,但我在一些论坛上看到,你必须使用某种形式的语言,如C来解析信息