python 打印机api_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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值