Печать 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 на windows: pip или родные установщики?
  • Как эмулировать socket.socketpair в Windows
  • Когда os.environ не соответствует os.getenv ('foo')?
  • Установка pyaudio на AMD64 из .exe
  • PIP / easy_install PIL в Virtualenv vcvarsall.bat ошибка Windows 7
  • Ошибка при импорте модуля тензорного потока
  • Получить полное имя компьютера из буквы сетевого диска в python
  • Почему модуль многопроцессорности Python импортирует __main__ при запуске нового процесса в Windows?
  • Ошибка python ctypes.WinDLL, _dlopen (self._name, mode) не может быть найдена
  • Как сделать скрипты python исполняемыми в Windows?
  • Как установить PyCairo (Cairo для Python) в Windows?
  •  
    Interesting Posts for Van-Lav

    PyODBC Cursor.fetchall () вызывает сбой python (segfault)

    разбиение числа на целое и десятичное числа в python

    Что происходит быстрее – загрузка маринованного словарного объекта или загрузка файла JSON – в словарь?

    python: использование вывода класса метода внутри другого класса

    как измерить время выполнения алгоритмов в python

    Множественные исключения и охват кода при модульном тестировании python

    нулевая матрица нумерации

    Чтение JSON из SimpleHTTPServer

    Оптимизация цикла Python

    Можно ли автогенерировать привязки Cython вокруг большой, существующей библиотеки C?

    Разделяемая строка Python с разделителем с несколькими символами

    Многопроцессорность – перечислить список, убить процессы, которые останавливаются выше предела ожидания

    Как отладочные консоли реализованы в Python?

    Получение многоадресных UDP-дейтаграмм с помощью python в Linux

    Как удалить содержимое файла текстового файла в Python?

    Python - лучший язык программирования в мире.