Принтер общего имени Python

Я разработал скрипт Python (2.6) под Linux.

Я запускаю этот сценарий с компьютера с Windows, который находится в сети.

Я расшарил принтер, подключенный через USB к компьютеру с Windows.

Я хотел бы получить общее имя принтера с помощью моего сценария.

Спасибо за помощь


person Hadramos    schedule 12.10.2012    source источник
comment
Взгляните на этот ответ: stackoverflow.com/a/558133/1129194   -  person Alex L    schedule 12.10.2012
comment
Как вы делитесь принтером? С компьютера с линуксом? Используете CUPS (IPP) или Samba?   -  person Pedro Romano    schedule 12.10.2012
comment
Да, мой принтер распознается CUPS. Я поделился через вариант самбы в CUPS. Я бы дал то же имя, что и имя общего ресурса в Windows. Моя цель - иметь возможность печатать на принтере, выполняя мой скрипт, зная, что у меня есть 5 ПК с 5 подключенными и общими принтерами.   -  person Hadramos    schedule 12.10.2012


Ответы (1)


Примечание. Это решение предполагает, что у вас есть сервер CUPS, работающий на компьютере с Linux, и пакет pycups также доступен в вашей среде Python (Debian/Ubuntu: apt-get install python-cups, Red Hat/Fedora/CentOS: yum install python-cups или установлен из исходный код: более сложный, поскольку зависит от наличия libcups файлов разработки для успешной компиляции.).

Добавьте удаленные принтеры Windows на сервер Linux box CUPS. Это сделает принтеры локально доступными для скрипта Python, работающего в Linux.

Затем используйте пакет pycups для взаимодействия с принтерами (документация). Например, чтобы вывести список принтеров, установленных на локальном сервере CUPS, и распечатать файл на одном из установленных принтеров:

import cups

conn = cups.Connection ()

# get printers available in the local CUPS server
printers = conn.getPrinters ()
for printer in printers:
    print printer, printers[printer]["device-uri"]

# get the first key from the printers dictionary as a sample printer name
printer_name = printers.keys()[0]
conn.printFile(printer_name, 'test_file_name.raw', 'job title', {})
person Pedro Romano    schedule 12.10.2012
comment
Привет, мой скрипт выполняется на машине с Linux, а не на машине с Windows. Он выполняется через http на машине Windows. Я видел pywin32, но этот модуль только для Python под Windows. Я хочу именно то, что pywin32, но linux. - person Hadramos; 12.10.2012
comment
Итак, чтобы уточнить: у вас есть принтеры, установленные на компьютерах с Windows, к которым открыт общий доступ из Windows, и вы хотите печатать на этих принтерах из Linux. Это оно? - person Pedro Romano; 12.10.2012
comment
Сначала попробуйте пакетную версию модуля, вместо того, чтобы пытаться скомпилировать его из исходного кода. Какой дистрибутив Linux вы используете? Если это Debian/Ubuntu, вам просто нужно сделать: apt-get install python-cups. Red Hat/CentOS/Fedora: yum install python-cups. Если вам нужно скомпилировать модуль из исходного кода, вам необходимо установить пакет разработки CUPS (то есть файлы заголовков CUPS и библиотеки разработки). - person Pedro Romano; 12.10.2012
comment
Я получаю сообщение об ошибке при компиляции pycups cupsmodule.c:23: fatal error: cups/cups.h: Aucun fichier ou dossier de ce type compilation terminated. error: command 'gcc' failed with exit status 1 - person Hadramos; 12.10.2012
comment
Я уже установил python-cups в свой дистрибутив Ubuntu и выполнил команду sudo python setup.py install - person Hadramos; 12.10.2012
comment
хорошо, я установил пакет libcups2-dev, и компиляция выполнена хорошо - person Hadramos; 12.10.2012
comment
Хорошо, я ошибаюсь IPPError: (1042, 'client-error-document-access-error') - person Hadramos; 12.10.2012