Как печатать HTML документ по протоколу IPP?
Итак, я пишу PHP-компонент, который может печатать документы через IPP (Internet Printing Protocol). Но я не могу распечатать документ 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 ответ
Хотя, например, CUPS рекламирует поддержку text/html
(см. это атрибут принтера document-formats-supported
) это не конвертирование HTML, например, postscript.
Вы не можете ожидать, что принтер или спулер отобразят HTML для вас (как это сделал бы браузер). Возможно, вы захотите найти конвертер html-to-pdf в качестве обходного пути.
Типичное и правильное решение будет включать выделенную библиотеку PDF для создания печатных документов. Недостатком является то, что вам придется снова кодировать макет.
Шаг 2 будет включать отправку задания на принтер. Похоже, ты справишься с этим. Если нет, проверьте этот ответ. Также есть реализация IPP для PHP, доступная по адресу http://www.nongnu.org/phpprintipp/