我正在尝试使用 win32print 在 python 中打印具有自定义页面大小的 pdf 文件,我可以更改其他设置,例如份数,但设置自定义页面长度和宽度不起作用,它总是尝试通过覆盖整个页面来将 pdf 内容放入页面中,这是我的代码
printers=win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL)
PRINTER_DEFAULTS = {"DesiredAccess":win32print.PRINTER_ALL_ACCESS}
temprint=printers[1][2]
handle = win32print.OpenPrinter(temprint, PRINTER_DEFAULTS)
level = 2
attributes = win32print.GetPrinter(handle, level)
attributes['pDevMode'].PaperWidth = 600
attributes['pDevMode'].PaperLength = 30
attributes['pDevMode'].PaperSize =0
print(win32print.SetPrinter(handle, level, attributes, 0))
win32api.ShellExecute(0,'printto','test.pdf','"%s"' % temprint,'.',0)
win32print.ClosePrinter(handle)
谁能告诉我我在这里做错了什么
我不确定这是否也适用于这种情况。但从类 documentation 中,我记得上述属性的值被指定为
(Tenths of a millimeter)
。
您在这里的价值观与此不符
attributes['pDevMode'].PaperWidth = 600
attributes['pDevMode'].PaperLength = 30
attributes['pDevMode'].PaperSize =0
也许是因为 PaperWidth 的访问类型是只读?
纸张宽度 数据类型:uint32 访问类型:只读 https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-printerconfiguration