尝试运行此代码:
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
笔记:
在我的计算机上,PRINTER_ACCESS_ADMINISTER在OpenPrinter中导致'Access is denied' .
在我的计算机上,SetPrinter失败,'Access is denied' . 但'Duplex'设置正确..