有没有办法明确告诉 CUPS 服务器您发送的文件text/html
因此覆盖了 mime.types 查找?
1 回答
就在这里。
使用这个命令行:
lp -d printername -o document-format=text/html file.html
更新(回应评论)
我对OP的问题提供了准确的答案。
但是,这(单独)并不能保证文件将被成功打印。为此,CUPS 需要一个过滤器来处理 MIME 类型的输入text/html
。
CUPS 本身不提供这样的过滤器。但是,很容易将您自己的过滤器插入 CUPS 过滤系统,并且一些 Linux 发行版提供了这样的过滤器,它能够使用 HTML 文件并将它们转换为可打印的格式。
您可以在系统上检查在这种情况下会发生什么。该cupsfilter
命令是一个帮助实用程序,用于运行可用/已安装的 CUPS 过滤器,而无需通过 CUPS 守护程序进行实际打印:
touch 1.html
/usr/sbin/cupsfilter --list-filters 1.html
现在在没有准备好使用 HTML 的过滤器的系统上,您会得到以下响应:
cupsfilter: No filter to convert from text/html to application/pdf.
在不同的系统上(比如在 Mac 上),你会看到:
xhtmltopdf
您甚至可以强制输入和输出 MIME 类型,以查看当被要求打印此文件和支持特定输出 MIME 类型的打印机时 CUPS 会自动运行哪些过滤器(-i
设置输入 MIME 类型、-m
输出):
/usr/sbin/cupsfilter \
-i text/html \
-m application/postscript \
--list-filters \
1.html
xhtmltopdf
cgpdftops
在这里,它将首先使用 将 HTML 转换为 PDF xhtmltopdf
,然后使用 将生成的 PDF 转换为 PostScript cgpdftops
。
如果您跳过该--list-filters
参数,该命令实际上甚至会通过主动运行(不仅仅是列出)两个过滤器并将结果发送到<stdout>
.
您可以基于 Shell 脚本编写自己的 CUPS 过滤器。htmldoc
您需要的唯一其他成分是命令行工具,例如wkhtmltopdf,
能够处理 HTML 输入并生成某种格式的工具,这些格式反过来可以被 CUPS 过滤链进一步使用。
请注意,一些(尤其是 JavaScript 繁重的)HTML 文件无法通过简单的命令行工具成功处理为可打印的格式。
如果您需要有关此的更多详细信息,请再问一个问题...