如何通过IPP协议打印HTML文档


How printing HTML document via IPP protocol?

所以,我写了一个PHP组件,可以通过IPP(互联网打印协议)打印文档。但是我不能正确打印HTML文档(text| HTML - mimetype)。打印机已将此类型打印为RAW格式。可能有人给出正确的请求(头部和身体)的例子?

例如我的错误请求,它被打印为RAW数据。

标题:

POST /printers/CanonLPR HTTP/1.1
Host: 10.2.2.105:631
Connection: close
Accept-encoding: gzip, deflate
User-agent: EHttpClient
Content-Type: application/ipp
Content-Length: 772
身体:

Gattributes-charsetutf-8Hattributes-natural-languageen_usEprinter-uri'http://10.2.2.105:631/printers/CanonLPRDrequesting-user-name
PHP-SERVERIdocument-format  text/html<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="language" content="ru" />
</head>
<body>
<img style="float: left; margin-right: 10px;" src="/static/img/printer.png" />
<h1>Test page</h1>
</body>
</html>

即使例如CUPS广告支持text/html(参见它的打印机属性document-formats-supported),它也不会将html转换为例如postscript。

您不能指望打印机或假脱机程序为您呈现HTML(像浏览器那样)。您可能需要搜索html-to-pdf转换器作为解决方案。

一个典型的和适当的解决方案将涉及一个专门的pdf库来创建可打印的文档。缺点是你必须重新编写布局代码。

步骤2将涉及将作业提交给打印机。看起来你能处理好这事。如果没有,请检查这个答案。还有一个PHP的IPP实现网址是http://www.nongnu.org/phpprintipp/