Как печатать 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/

Другие вопросы по тегам