У меня есть два компьютера linux с фиксированными IP-адресами:
- Сервер печати, на котором подключенный принтер используется совместно через CUPS .
(Сервер имеет IPадрес «192.168.1.2», а принтер называется «test_printer».) - Компьютер, на котором запущено приложение python, который должен иметь возможность использовать этот сервер печати.
К сожалению, распространение принтера через CUPS, кажется, не работает надежно (возможно, из-за структуры сети).
Могу ли я отправлять задания печати непосредственно из программы python на сервер печати CUPS?
Если да, не могли бы вы привести небольшой пример?
Теоретически, я бы просто отправил правильно отформатированные данные на IP-адрес + порт, но я не получил его на работу...
Вот подходы, которые я нашел до сих пор, и мои проблемы с ними:
command 'lpr'
import subprocess
lpr = subprocess.Popen("usr/bin/lpr", stdin=subprocess.PIPE) # on some distros the command is 'lp'
lpr.stdin.write("hello world\n")
lpr.stdin.close()
Полагается на распространение принтера через CUPS.
Python Module Pycups
import cups
with open("/home/user/Documents/some.txt", "w") as f:
f.write("hello world\n")
conn = cups.Connection()
conn.printFile("test_printer", "/home/user/Documents/some.txt", "some_title", {})
Прежде чем я смогу использовать принтер, я должен сначала добавить его, что, в свою очередь, зависит от распространения через CUPS.
Также я не получил conn.addPrinter()
для работы.
модуль python python-escpos / python-printer-escpos
import escpos.printer
p = escpos.printer.Network("192.168.1.2", port=631) # port 9100 seems not to work.
p.text("hello world\n")
p.close()
Пожалуй, самый многообещающий подход ... к сожалению, он ничего не печатает и выдает исключение при закрытии.
# The traceback was produced in the interactive shell.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/user/.local/lib/python3.6/site-package/escpos/printer.py", line 214, in close
self.device.shutdown(socket.SHUT_RDWR)
OSError: [Errno 107] Transport endpoint is not connected
Я использую Python 3.6.7.
Сервер печати использует CUPS 2.2.1.