python 使用win32print调用打印机,设置打印机参数无效

python 使用win32print 调用打印机打印doxc,pdf, 图片等文档,设置打印机参数无效,比如设置打印份数,纵向打印 等参数无效

try:
        dir_path = "./file/2022-09-19/abc.docx"
        # dir_path = "./file/2022-09-19/393f5435d981a2b2a01d381999969142.pdf"
        # 获取默认打印机
        printername = win32print.GetDefaultPrinter()
        # printername = "Samsung M2070 Series"
        # for it in win32print.EnumPrinters(2):
        #    print(it[2])
        # 设置权限
        PRINTER_DEFAULTS = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS}
        # 启动打印机
        pHandle = win32print.OpenPrinter(printername, PRINTER_DEFAULTS)
        # 打印机参数&属性 1:元组 2:列表
        properties = win32print.GetPrinter(pHandle, 2)
        devmode = properties['pDevMode']
        # 横向打印
        # devmode.Orientation = win32con.DMORIENT_PORTRAIT
        # 打印份数
        devmode.Copies = 3
        devmode.PaperSize = 0  #
        devmode.PaperLength = 3150  # .
        devmode.PaperWidth = 2500
        devmode.Duplex = win32con.DMDUP_SIMPLEX  # 单面
        devmode.Orientation = win32con.DMORIENT_LANDSCAPE  # 纵向打印
        properties['pDevMode'] = devmode
        # 获得文件
        filename = os.getcwd() + dir_path
        win32print.SetPrinter(pHandle, 2, properties, 0)
        win32print.SetDefaultPrinter(printername)
        # for n in dir(properties['pDevMode']):
        #     print("%s = %s" % (n, getattr(properties['pDevMode'], n)))
        # win32print.DocumentProperties(0, pHandle, printername, None, None, 5)
        win32api.ShellExecute(0, "print", filename, None, ".", 0)
        # os.startfile(filename, 'print')
        win32print.ClosePrinter(pHandle)
    except Exception as e:
        print(str(e.args)+"请检查设备是否正确连接..") 

这样打印字符串也是一样的效果,参数不起作用

printer_name = win32print.GetDefaultPrinter()
    buf = bytes("123123", "utf-8")
    # 设置权限
    PRINTER_DEFAULTS = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS}
    hPrinter = win32print.OpenPrinter(printer_name, PRINTER_DEFAULTS)
    # 打印机参数&属性 1:元组 2:列表
    properties = win32print.GetPrinter(hPrinter, 2)
    devmode = properties['pDevMode']
    # 横向打印
    # devmode.Orientation = win32con.DMORIENT_PORTRAIT
    # 打印份数
    devmode.Copies = 3
    devmode.Duplex = win32con.DMDUP_SIMPLEX  # 单面
    devmode.Orientation = win32con.DMORIENT_LANDSCAPE  # 纵向打印
    properties['pDevMode'] = devmode
    win32print.SetPrinter(hPrinter, 2, properties, 0)
    try:
        hJob = win32print.StartDocPrinter(hPrinter, 1, ("文档", None, None))
        try:
            win32print.StartPagePrinter(hPrinter)
            win32print.WritePrinter(hPrinter, buf)
            win32print.EndPagePrinter(hPrinter)
        finally:
            win32print.EndDocPrinter(hPrinter)
    finally:
        win32print.ClosePrinter(hPrinter)

能正常打印,设置的参数不起作用