编程语言
首页 > 编程语言> > Python的win32api只打印到默认打印机

Python的win32api只打印到默认打印机

作者:互联网

我正在尝试使用win32api将PDF文档输出到特定的打印机.

win32api.ShellExecute(0, "print", filename, '/d:"%s"' % printername, ".", 0)

filename是文件的完整路径名,printname是通过win32api.EnumPrinters(6)的输出获得的目标打印机的名称.

即使printername是不同目标的名称,该文件也会被发送到Windows默认打印机(我的期望是通过特定打印机会将指定文件发送到该打印机,而不是默认值).

关于我做错了什么的暗示?是否有不同的方法将PDF文件一般打印到特定的打印机?除此之外,有没有办法临时更改程序中的默认打印机?

解决方法:

MikeHunter的答案是一个不错的起点.

建议的解决方案是呼叫Acrobat或Acrobat Reader进行实际打印,而不是通过win32api.就我的目的而言,这就足够了:

from subprocess import call

acrobat = "C:\Program Files\Adobe\Acrobat 7.0\Acrobat.exe" ## Acrobat reader would also work, apparently
file = "C:\path\to\my\file.pdf"
printer = "Printer Name Goes Here"

call([acrobat, "/T", file, printer])

这将启动Acrobat,并将给定文件打印到指定的打印机,即使它不是Windows默认值.以这种方式处理的第一个打印作业需要几秒钟(我假设这是Acrobat服务正在启动并缓存在内存中),后续作业立即打印.我没有对此进行任何类型的负载测试,但我认为这个调用不是那么简单,所以不要相信它的大量吞吐量.

标签:python,pdf,printing,winapi,shellexecute
来源: https://codeday.me/bug/20190630/1331461.html