我们有 2 个连接网络的 HP LaserJet 400 M401dne,我们需要它们直接从服务器命令行打印发票 PDF。
我已将打印机添加到 CUPS 并创建了一个包含这两个打印机的打印类(发票)。
然后我设置了一个 cron 作业,它检查发票文件的目录并在找到任何文件时将它们发送到打印,然后将文件移开。
lpr -P invoices -# 4 {pdf文件列表}
然而,似乎只要同时打印超过 4-5 张发票,就会发生一些事情——打印机对杯子没有响应,杯子作业永远留在队列中,不打印也不取消打印。
与此同时,打印机仍然接受来自 Windows 打印系统的打印输出,它并行使用它。
似乎可行的是取消杯子中的所有打印作业,硬件循环打印机并执行cupsdisable/cupsenable(不确定是否需要最后一个)。
但是,应该有一些解决方案,以便 CUPS 在准备好接受它们之前不会将作业发送到打印机。
可能是什么问题?
也许我需要选择不同的打印协议?目前我使用 CUPS 管理网页建议的内容:
dnssd://HP%20LaserJet%20400%20M401dn%20(636536)._ipp._tcp.local/?uuid=564e4835-5030-3038-3636-c8cbb8636536
但也许我应该使用 IPP 或其他协议?如果是这样,我如何才能找到 HP 打印机的 IPP 队列名称?
或者也许我应该使用不同的打印机驱动程序而不是:HP LaserJet 400 M401dne Postscript(推荐)?
UPD:lpstat - v 输出:
device for invoices: ///dev/null
device for default: ///dev/null
device for HP_LJ_PRO_400_1: dnssd://HP%20LaserJet%20400%20M401dn%20(072E87)._ipp._tcp.local/?uuid=564e4633-4430-3134-3232-6c3be5072e87
device for HP_LJ_PRO_400_2: dnssd://HP%20LaserJet%20400%20M401dn%20(636536)._ipp._tcp.local/?uuid=564e4835-5030-3038-3636-c8cbb8636536
device for HP_HP_LaserJet_P2055dn: dnssd://HP%20LaserJet%20P2055dn%20%5B0E39EF%5D._pdl-datastream._tcp.local/
device for Ricoh_1515: lpd://192.168.100.33/lp
我建议在端口 9100 上使用套接字打印:
简单的配置:
到目前为止,似乎最好的选择是使用 ipp://printer-ip/ 添加这个特定的打印机。
使用通用 HP LJ PCL6 驱动程序(PCL5 在网上某处被推荐为在 HP 打印机上打印 PDF 的最佳驱动程序)产生打印机不接受复制参数(lpr -# 参数)的问题,所以我切换回 CUPS 推荐的 Postscript那些的司机。
使用 socket:// 接口时,仍然有一些打嗝,打印作业不再接受作业,并且它们以“连接到打印机”状态挂在队列中,需要手动重新启动 cups 服务器才能消除这种情况。
切换到ipp后,这还没有发生。