Какой самый простой способ (в Python) для печати на удаленный сервер IPP/CUPS или принтер?

У меня есть файл postscript, и я хочу, чтобы он был напечатан на устройстве с поддержкой IPP (или на сервере CUPS). Каков минимальный код и зависимости, которые я мог бы использовать для этого.

Использование LPR или libcups дает мне много кроссплатформенных зависимостей. Поэтому мой первый подход состоял в том, чтобы реализовать минимальное подмножество IPP (протокол, используемый чашками и многими современными принтерами), поскольку "это только расширенный HTTP". Но, к сожалению, клиент IPP - это гораздо больше кода, чем несколько строк, и до сих пор я не нашел реализации клиента IPP, предназначенной только для печати, а не для управления сервером печати.

Я бы предпочел решение на Python, но также был бы рад чему-то на другом динамическом языке.

3 ответа

Вам нужно добавить удаленный принтер в CUPS:

lpadmin -p printername -E -v //IPADDRESS/spool -m driver.ppd

где driver.ppd - драйвер для печати

PS: это также может работать для программного доступа, если принтер был установлен ранее.

Pycups является отличным инструментом; Вот пример кода, который его использует, включая настройку некоторых параметров, таких как подгонка к странице https://sourceforge.net/p/coils/coils-code/ci/master/tree/coils/logic/workflow/actions/doc/ipp_print.py

Существует также код для использования протокола LPR. https://sourceforge.net/p/coils/coils-code/ci/master/tree/coils/logic/workflow/actions/doc/lpr_print.py

Общение напрямую с сервером печати намного лучше, чем использование зависимого от платформы инструмента командной строки.

Для CUPS есть оболочка для Python ipptool доступно на github:

Вы также можете проверить этот ответ.

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