我正在处理的项目将.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")