如何将原始文件发送到具有 Postscript PPD 的打印机?

如何将原始文件发送到具有 Postscript PPD 的打印机?

当我尝试将原始文件(如 PCL 文件)发送到我的网络打印机时,CUPS 队列会被搞砸,打印机会被“禁用”,即使我使用“lpr -l”或“lpr -o raw”等命令也是如此。

我认为 PPD 可能把它搞砸了,因为打印机的 PPD 在其描述中特别提到“Postscript(推荐)”,如果将 postscript 发送给它,那么它就可以正常工作。

我无法将打印机作为设备直接发送到打印机,因为它是联网的。

答案1

PCL 和 Postscripts 是两种相互竞争的打印协议。

如果打印机支持这两种协议,则必须在 CUPS 中使用不同的 PPD/不同的打印方式定义不同的队列。

您可以尝试通过 IPP 与打印机对话。

如果打印机特定型号只使用 Postscript,那么您就没有必要向其发送 PCL。

答案2

您可以使用lpr -o raw pcl-file它来将数据发送到打印机,而无需对其进行任何修改。事实上,这种用法非常常见,因此有一个单独的选项:(lpr -l pcl-file相当于-l) -o raw

答案3

在与这个问题斗争了很长时间(大约一个月)后,我发现基本上 lpr/CUPS 某种大脑受损的逻辑导致它无法使用网络打印机。问题是整个“禁用/启用”打印机范例,一旦 lpr 变得混乱,就会导致打印机变得无法使用,这在某些时候必然会发生。由于用户必须具有超级用户权限才能诊断此类问题,因此 lpr 对于非特权用户工作组环境中的任何人来说基本上都无法使用。

我解决问题的方法是用 C 语言编写一个简短的程序,连接到端口 9100 上的打印机 IP 地址,打开 PCL 文件进行只读打印,将文件复制到连接套接字,然后关闭连接和文件。这对我来说每次都完美无缺。因此,如果您想打印原始文件,基本上可以使用您必须执行的任何编程功能。您甚至可以在 bash 或 csh 中执行此操作。

相关内容