通过 Python 以双面模式打印 PDF 文件

Print PDF file in duplex mode via Python

我在 Python 中有一个打印 PDF 文件的脚本。
该脚本使用 win32api.ShellExecute() 工作,一切正常,但现在,我需要打印具有双面内容的 PDF 文件,具体的用户手册。
我已经尝试在 win32print 中设置双面模式,但没有任何效果,打印机仍然在 2 sheet 上为我的 PDF 打印 2 页,而不是在双面 sheet 上打印两页。 打印机在其他应用程序中使用此模式工作,但使用 python 脚本时效果不佳。 这是我用来打印的代码的一部分:

name = win32print.GetDefaultPrinter()
printdefaults = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS}
handle = win32print.OpenPrinter(name, printdefaults)
level = 2
attributes = win32print.GetPrinter(handle, level)
attributes['pDevMode'].Duplex
attributes['pDevMode'].Duplex = 1
win32print.SetPrinter(handle, level, attributes, 0)
win32print.GetPrinter(handle, level)['pDevMode'].Duplex
win32api.ShellExecute(0,'print','file.pdf','.','/route',0)

知道为什么这不起作用吗?谢谢

尝试运行此代码:

import win32api
import win32print

name = win32print.GetDefaultPrinter()

#printdefaults = {"DesiredAccess": win32print.PRINTER_ACCESS_ADMINISTER}
printdefaults = {"DesiredAccess": win32print.PRINTER_ACCESS_USE}
handle = win32print.OpenPrinter(name, printdefaults)

level = 2
attributes = win32print.GetPrinter(handle, level)

print "Old Duplex = %d" % attributes['pDevMode'].Duplex

#attributes['pDevMode'].Duplex = 1    # no flip
#attributes['pDevMode'].Duplex = 2    # flip up
attributes['pDevMode'].Duplex = 3    # flip over

## 'SetPrinter' fails because of 'Access is denied.'
## But the attribute 'Duplex' is set correctly
try:
    win32print.SetPrinter(handle, level, attributes, 0)
except:
    print "win32print.SetPrinter: set 'Duplex'"

res = win32api.ShellExecute(0, 'print', 'test.pdf', None, '.', 0)

win32print.ClosePrinter(handle)

它适用于我的电脑:Windows 10,Python 2.7.14,pypiwin32-220

备注:

  1. 在我的电脑上 PRINTER_ACCESS_ADMINISTER 导致 'Access is denied' 在 打开打印机。
  2. 在我的计算机上,SetPrinter 失败 'Access is denied'。但是 'Duplex' 是 设置正确..