【问题标题】:Zebra Printing with CUPS no print ZPL or EPL使用 CUPS 进行 Zebra 打印 无打印 ZPL 或 EPL
【发布时间】:2012-07-16 09:53:27
【问题描述】:

我有一台 Zebra GK420d 通过 CUPS 连接到 OS X。但是,当我向它发送用 ZPL 或 EPL 编写的文件时,它们只会以纯文本形式打印。

我需要更改打印机的模式吗?

【问题讨论】:

    标签: printing zebra-printers zpl epl


    【解决方案1】:

    与其他人所说的相反,您不需要专门添加原始队列。

    相反,您可以使用-o raw 开关将原始文件提交到任何队列:

    lpr -P CupsPrinterName -o raw path/to/label.zpl
    

    可以通过 CUPS 中的链接找到打印机名称:

    http://localhost:631/printers/
    

    这也适用于使用 CUPS 的其他平台,例如 Linux。

    【讨论】:

    • 谢谢!我确实在某处读到 CUPS Zebra 驱动程序支持 RAW 和 PCL 打印。现在来了解如何让 GUI 应用程序打印 RAW...
    • @ArgaPK 问另一个问题;在顶部看到一个按钮
    • 不错的答案,只是添加一点信息,如果您将斑马设置为默认打印机,则不需要使用 PrinterName
    【解决方案2】:

    您可以使用 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/
    

    【讨论】:

    • 如果你不使用原始套接字,CUPS 会尝试渲染文本,然后打印出来。
    • http://localhost:631 技巧适用于 macOS 以及只要您启用 Web 界面 sudo cupsctl WebInterface=yes
    【解决方案3】:

    这是一个更全面的答案,因为我似乎每隔几年就会回到这个问题。要在 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 版本可能会出现问题 - 较长的文件将打印,而较短的文件将打印一次然后停顿几分钟(看起来存在超时在)。一种解决方法是添加 cmets 以将其扩展超过 512 字节限制。

    示例 Zebra 文件 (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
    

    【讨论】:

      【解决方案4】:

      您需要避免任何过滤。使用在 CUPS 界面中配置的 RAW 过滤器进行打印,或者默认情况下在您的 lpadmin 语句中进行打印。您没有说明打印机是如何连接的,但如果是 IP,您的目的地很可能是 socket://ip.addr.ess:9100

      【讨论】:

        【解决方案5】:

        我是一个 PC 人,所以我不太了解 CUPS,但我在 PC 上使用过 zpl 和 epl,发现他们真的很喜欢获取原始打印文件。我总是做一个: filecopy "c:\zplfile.txt" "\computername\printershare" 类型命令。 如果我只想做一些文字,我也使用过写字板。但是对于标签和条形码,我会看看是否有办法将原始 zpl 或 epl 发送到打印机端口。希望这会有所帮助。

        【讨论】:

        【解决方案6】:

        谢谢。我又看了一些。似乎在使用杯子时,您无法将原始 ZPL 命令发送到打印机。就像我所做的是在杯子中创建打印机作为套接字并在 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)来解析信息

        【讨论】:

        • CUPS 允许根据其他接受和投票的答案执行原始 ZPL 命令。
        猜你喜欢
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多