用CUPS打印html文件

von*_*hev 4 cups

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

Kur*_*fle 8

就在这里.

使用此命令行:

lp -d printername -o document-format=text/html file.html
Run Code Online (Sandbox Code Playgroud)

更新(回应评论)

我提供了OP问题的确切答案.

但是,这(单独)不保证文件将成功打印.为此,CUPS需要一个可以处理MIME类型输入的过滤器text/html.

CUPS本身不提供这样的过滤器.但是,很容易将自己的过滤器插入CUPS过滤系统,并且一些Linux发行版提供了这样的过滤器,能够使用HTML文件并将其转换为可打印格式.

您可以检查在这种情况下会发生什么你的系统.该cupsfilter命令是一个帮助程序实用程序,用于运行可用/已安装的CUPS过滤器,而无需通过CUPS守护程序进行实际打印:

touch 1.html
/usr/sbin/cupsfilter --list-filters 1.html
Run Code Online (Sandbox Code Playgroud)

现在,在没有准备好HTML消费过滤器的系统上,您将得到以下响应:

cupsfilter: No filter to convert from text/html to application/pdf.
Run Code Online (Sandbox Code Playgroud)

在不同的系统上(如在Mac上),您会看到:

xhtmltopdf
Run Code Online (Sandbox Code Playgroud)

您甚至可以强制输入和输出MIME类型,以查看当要求打印此文件时,CUPS将自动运行哪个过滤器支持特定输出MIME类型的打印机(-i设置输入MIME类型,-m输出):

/usr/sbin/cupsfilter                  \
            -i text/html              \
            -m application/postscript \
            --list-filters            \
              1.html
  xhtmltopdf
  cgpdftops
Run Code Online (Sandbox Code Playgroud)

在这里,它首先使用HTML将PDF转换为PDF xhtmltopdf,然后将生成的PDF转换为PostScript cgpdftops.

如果跳过--list-filters参数,该命令实际上甚至会继续进行转换,方法是主动运行(不仅仅列出)两个过滤器并将结果发送到<stdout>.

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

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

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