Проект, над которым я работаю, отправляет задания печати .pdf на настройки принтера с балансировкой нагрузки.
Изначально я использовал win32api.ShellExecute, но у меня возникли проблемы с сохранением макета страницы PDF-файла / ориентации буклета. В ходе тестирования я обнаружил, что этой проблемы не было при отправке pdf напрямую через оболочку со следующим:
"C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe" /N /T "testfile.pdf" "\\testprinter\"
Я рассматриваю subprocess.run () для выполнения команды, так как это на Python 3.7. subprocess.run () выполнит мою команду, чтобы отправить задание на печать в очередь на печать, но проблема в том, что Acrobat остается открытым, подпроцесс никогда не завершится, пока я не уничтожу Acrobat. Я мог бы добавить аргумент тайм-аута, но это действительно не кажется хорошим решением.
Вот пример моего подпроцесса:
import subprocess
acrobat = r"C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe"
pdf_file = "test.pdf"
printer = r"\\testprinter\"
result = run([acrobat, "/N", "/T", pdf_file, printer], stdout=PIPE)
result.stdout.decode("utf-8")