python用win32print和win32ui设置打印机首选项纸张大小方向并打印,但是打印成功了首选项却没有设置成功,纸张大小依旧是设置大小,找了很多依旧没能解决,只使用win32print打印的话能够运行代码不报错,但是打印的文件0kb出错无法打开。我也问过chatgpt但是得不到有用的答复。谁能稍微救我一下子……
import win32con
import win32print
import win32ui
def pdf_print_device():
try:
default_printer = win32print.GetDefaultPrinter()
printdefaults = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS}
handle = win32print.OpenPrinter(default_printer, printdefaults)
try:
properties = win32print.GetPrinter(handle, 2)
devmode = properties['pDevMode']
devmode.PaperLength = 1000
devmode.PaperWidth = 1000
devmode.PaperSize = 0
devmode.Orientation = win32con.DMORIENT_LANDSCAPE
# properties['pDevMode'] = devmode
win32print.SetPrinter(handle, 2, properties, 0)
# win32print.SetDefaultPrinter(default_printer)
except Exception as e:
print(e)
text = "test"
hdc = win32ui.CreateDC()
hdc.CreatePrinterDC(default_printer)
hdc.StartDoc("test")
hdc.StartPage()
title = [150, 400, text, {'name': 'Times New Roman', 'height': 135}]
font = win32ui.CreateFont(title[3])
hdc.SelectObject(font)
hdc.TextOut(title[0], title[1], str(title[2]))
hdc.EndPage()
hdc.EndDoc()
win32print.ClosePrinter(handle)
except Exception as e:
print(e)