Печать PDF-документа с помощью модуля win32print python?

Я пытаюсь распечатать документ PDF с помощью модуля win32print. По-видимому, этот модуль может принимать только PCL или исходный текст. Это верно?

Если да, существует ли модуль для преобразования PDF-документа в PCL?

Я рассматривал использование ShellExecute; однако это не вариант, поскольку он позволяет печатать только на принтере по умолчанию. Мне нужно печатать на разных принтерах на серверах разных сетей.

Спасибо за вашу помощь, Пит

3 Solutions collect form web for “Печать PDF-документа с помощью модуля win32print python?”

В итоге я использовал Ghostscript для выполнения этой задачи. Существует инструмент командной строки, который опирается на Ghostscript, называемый gsprint .

Вам даже не нужен Acrobat для печати PDF-файлов таким образом, что довольно приятно.

Вот пример:

в командной строке:

gsprint -printer \\server\printer "test.pdf" 

из python:

 win32api.ShellExecute(0, 'open', 'gsprint.exe', '-printer "\\\\' + self.server + '\\' + self.printer_name + '" ' + file, '.', 0) 

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

Однако есть один недостаток. Код лицензирован под GPL, поэтому он не очень полезен в коммерческом программном обеспечении.

Надеюсь, это поможет кому-то, Пит

Я уже использовал подход win32api.ShellExecute и должен был печатать на нестандартном принтере. Лучшим способом, который я мог бы решить, было временно изменить принтер по умолчанию. Поэтому, прежде чем я сделаю печать, я сохраняю то, что является текущим принтером по умолчанию, изменил его и снова установил после печати. Что-то вроде:

 tempprinter = "\\\\server01\\printer01" currentprinter = win32print.GetDefaultPrinter() win32print.SetDefaultPrinter(tempprinter) win32api.ShellExecute(0, "print", filename, None, ".", 0) win32print.SetDefaultPrinter(currentprinter) 

Я не собираюсь утверждать, что это красиво, но это сработало, и это позволило мне оставить мой другой код нетронутым.

Я не уверен, как конкретно заставить win32print работать, но может быть несколько других вариантов. Reportlab, если это часто упоминается при создании PDF-файлов с Python. Если вы уже инвестировали в ваш подход, возможно, используя PyX или pypsg для генерации файлов Postscript, а затем его использование в win32print будет работать.

  • Может ли Python выбрать сетевой адаптер при открытии сокета?
  • Линейные дроссели на 0x1A
  • Управление процессами Windows с использованием Python
  • Ошибка командной строки Python timeit: «SyntaxError: EOL при сканировании строкового литерала»
  • pathname слишком долго, чтобы открыть?
  • Как определить, является ли файл исполняемым в Windows на Python?
  • pip install с ошибкой соединения: сертификат не выполнен (_ssl.c: 598) "
  • Получение дружественных имен устройств в python
  • Python - лучший язык программирования в мире.