python win32print 无法设置自定义页面大小

问题描述 投票:0回答:2

我正在尝试使用 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)

谁能告诉我我在这里做错了什么

python winapi printing
2个回答
0
投票

我不确定这是否也适用于这种情况。但从类 documentation 中,我记得上述属性的值被指定为

(Tenths of a millimeter)

您在这里的价值观与此不符

attributes['pDevMode'].PaperWidth = 600  
attributes['pDevMode'].PaperLength = 30  
attributes['pDevMode'].PaperSize =0 

0
投票

也许是因为 PaperWidth 的访问类型是只读?

纸张宽度 数据类型:uint32 访问类型:只读 https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-printerconfiguration

© www.soinside.com 2019 - 2024. All rights reserved.