使用 ippeveprinter 设置打印到磁盘系统

问题描述 投票:0回答:4

CUPS 中现在已弃用打印机驱动程序、后端和 PPD,因此我正在寻找将 PDF 文件打印到磁盘的“新”方法。 Michael Sweet(CUPS 的发明者)认为

ippeveprinter
是前进的方向,但我很难理解它。

我使用

ippeveprinter -D /Users/Shared/Print/ "Qwe"
设置它,并收到回复“正在监听端口 8501”。

所以我发送一个文件:

lp -d Qwe /path/to/file

并且

ippeveprinter
过程会挥霍大量“成功”消息:

localhost POST /ipp/print
localhost Continue
localhost Get-Job-Attributes successful-ok
localhost OK
localhost POST /ipp/print
localhost Continue
localhost Get-Printer-Attributes successful-ok
localhost OK
localhost Client closed connection.

但在所选位置找不到任何文件。或者我能看到的任何其他地方。

有什么想法吗?这是在 macOS 上,但 CUPS 也涵盖其他操作系统。

macos printing cups
4个回答
2
投票

对于 ippeveprinter,-D 指定输出目录。使用 -d 保存假脱机文件的副本,使用 -c 生成 Postscript。

我是这样测试的:

% ippeveprinter -k -D file:///Users/Shared/print -c /usr/libexec/cups/command/ippeveps "Qwe"
Listening on port 8501.

该文件保存为 Postscript (.prn),因此您需要将它们转换为您选择的格式。 Homebrew 有 ps2pdf,我测试过它可以正确地从 .prn 文件生成 .pdf 文件。


1
投票

手册页说,当 URI 是目录时,

-D
选项将使用作业 ID 和名称创建输出文件。

使用

-d
(小写)和
-k
(如 James Risner 的答案)只需移动临时假脱机文件夹的位置。

要输出文件,似乎您必须使用

-c ippeveps
(尽管我的设置需要
/usr/libexec/cups/command/ippeveps
的完整路径名)。

这会生成一个 PostScript 文件(尽管文件扩展名为

.prn
)。即使使用
-F application/pdf
选项也不会生成 PDF 文件。手册页再次指出它必须与指定 PPD 文件的
-P
选项一起使用。这也不起作用,除非我在 PPD 中添加一行指定要生成的 PDF:

*cupsFilter: "application/pdf 0 cgpdftopdf"

但是,这引用了 CUPS 过滤器,本练习的重点是避免使用过滤器和 PPD,因为它们已被弃用。

(PPD 文件是由 CUPS 生成的通用文件;您需要创建或指向您自己的文件。)

因此,以下命令现在有效:

ippeveprinter -D file:///Users/Shared/Print/ -c /usr/libexec/cups/command/ippeveps -F application/pdf  -P /private/etc/cups/ppd/Direct_PDF.ppd Qwe

...但需要注意的是,当不再支持过滤器和 PPD 时,它不会有任何帮助。


0
投票

我希望澄清这个答案中的一两个误解。

  • ippeveprinter 是一款功能齐全的 IPP 打印机。在 IPP 无处不在的术语中,它的性能与我的 ENVY4500 相同。也就是说,它将通过网络上的 mdn 为自己做广告,并为其能够支持的任何页面描述语言 (pdl) 打印作业。不同之处在于 ippeveprinter 打印到假脱机目录,而 ENVY4500 打印在纸张上。
  • HP 确定其打印机固件中可接受的 pdls。 ippeveprinter 对其 -f 选项执行相同操作:
    ippeveprinter -f application/pdf myprinter
    。重要的是要认识到,当 CUPS 客户端与 myprinter 交互时,它有义务发送 PDF。
  • 更重要的是要意识到,一旦 PDF 出现在 ippeveprinter 的假脱机目录中,CUPS 就完成了它的工作。就是这样,CUPS 现在已经不再存在了。它对 ippeveprinter 接下来做什么没有任何发言权。
  • 与我的 ENVT4500 不同,ippeveprinter 可以为打印到其假脱机目录的每个作业运行命令。该命令可能涉及使用 PPD 和供应商驱动程序。 CUPS 一点也不在乎;它不参与。这是打印机应用程序的基础。
  • 在 Debian 上(使用之前的 ippeveprinter 命令),PDF 出现在 /tmp/ippeveprinter.xxxx 中。我可以使用 -D 选项将它们转移到其他地方。我也可以用 -c 来操纵它们。
  • 摘要:ippeveprinter 是一款无处不在的打印机。用户决定 CUPS 如何与其交互以及它的行为方式。

0
投票

有人找到了了解发送要打印文档的用户或主机的方法吗?

皮维尔

© www.soinside.com 2019 - 2024. All rights reserved.