Какой самый простой способ (в 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:
Вы также можете проверить этот ответ.