用CUPS打印html文件

时间:2011-11-30 13:49:09

标签: cups

有没有办法明确告诉CUPS服务器您发送的文件是text/html从而覆盖mime.types查找?

1 个答案:

答案 0 :(得分:7)

是的,有。

使用此命令行:

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类型,以查看当要求打印此文件时,CUPS会自动运行哪些过滤器支持该特定输出MIME类型的打印机( -i 设置输入MIME类型, -m 输出):

/usr/sbin/cupsfilter                  \
            -i text/html              \
            -m application/postscript \
            --list-filters            \
              1.html
  xhtmltopdf
  cgpdftops

此处首先使用xhtmltopdf将HTML转换为PDF,然后使用cgpdftops将生成的PDF转换为PostScript。

如果您跳过--list-filters参数,该命令实际上甚至可以通过主动运行(不仅仅列出)两个过滤器并将结果发送到 <stdout> <来进行转换/ em>的

您可以根据Shell脚本编写自己的CUPS过滤器。您需要的唯一其他成分是命令行工具,例如htmldocwkhtmltopdf,,它能够处理HTML输入并生成某种格式,而这些格式又可以被CUPS过滤链消耗。路。

请注意,一些(特别是JavaScript)重的HTML文件无法通过简单的命令行工具成功处理为打印就绪格式。

如果您需要更多详细信息,请提出另一个问题......