Перенаправление вывода виртуального принтера на скрипт Python
Я намерен достичь следующего сценария:
Пользователь Windows или Linux дает команду на печать документа (используя Ctrl+P) и просматривает фиктивный принтер (виртуальный принтер) в списке доступных принтеров
Пользователь выбирает принтер и дает команду печати
Вместо фактической печати фиктивный принтер автоматически отправляет файл вместе с выбранным размером бумаги, форматом и т. Д. В сценарий Python в качестве входных данных [необязательно после преобразования его в PDF].
Сценарий Python загружает файл в облако или в какое-либо удаленное хранилище, откуда его можно извлечь и распечатать позже на физическом принтере, когда это необходимо.
Я уже отослал ответ на аналогичный существующий вопрос по Stackru и посмотрел CUPS и CUPS-PDF. CUPS_PDF - это виртуальный принтер, поэтому он удовлетворяет одному критерию для меня, но он не позволяет мне обрабатывать файлы, отправленные на печать. Я мог бы отслеживать каталог, в котором находятся преобразованные PDF-файлы, и вызывать скрипт python каждый раз, когда каталог изменяется, но это далеко не идеальное решение.
Я пытался создать что-то подобное в Windows, используя win32 API в виде принтера FILE, но опять-таки он не позволяет мне обрабатывать файл, который будет напечатан.
Я также наткнулся на Tea4CUPS, который является своего рода программируемым бэкэндом для принтера CUPS, но я не совсем уверен, как использовать это. Другой альтернативой, с которой я столкнулся, было написание драйвера виртуального принтера с использованием Windows Driver Kit (WDK), но это кажется слишком сложным, особенно учитывая тот факт, что мне нужен виртуальный принтер, чтобы просто перенаправить файл, который будет напечатан, в мой скрипт на python.
Как я могу достичь желаемого сценария? Хотя у меня есть опыт работы с Python, я никогда не работал над виртуальными принтерами до этого.
1 ответ
Используйте RedMon. Это порт принтера Windows с открытым исходным кодом, который просто перенаправляет весь вывод на принтер конкретной программе (например, скрипту Python).
Следующая процедура действительна для версий до Windows 10 2015 года:
- Загрузите и установите программное обеспечение RedMon с помощью установщика.
- В разделе "Устройства и принтеры" запустите мастер "Add Printer" от имени администратора (или используйте win32 API).
- Добавьте принтер с помощью драйвера postscript (я лично предпочитаю устанавливать PS-драйвер Xerox Global Print Driver, но другие драйверы PS уже установлены) и создайте новый "Перенаправленный порт".
- Вы можете настроить параметры в разделе "Настройка порта", чтобы направить вывод в ваш сценарий.