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

时间:2014-08-14 11:10:41

标签: php html printing protocols ipp-protocol

所以,我编写PHP组件,可以通过IPP(Internet打印协议)打印文档。但我无法打印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>

1 个答案:

答案 0 :(得分:1)

即使例如CUPS宣传支持text/html(请参阅它的打印机属性document-formats-supported),它不会将html转换为例如后记。

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

典型且适当的解决方案将涉及用于创建可打印文档的专用pdf库。缺点是你必须再次编码布局。

步骤2涉及将作业提交给打印机。它看起来像你可以处理这个。如果没有,请检查this answer。此外,http://www.nongnu.org/phpprintipp/

还提供了适用于PHP的IPP实现