更改打印机首选项设置

def set_print_preference(device_name=None):
    # 更改打印机首选项设置
    # https://cloud.tencent.com/developer/ask/sof/1515323/answer/2070398
    # https://www.cnblogs.com/cfld/p/16159080.html
    # http://timgolden.me.uk/pywin32-docs/PyDEVMODE.html
    # https://xyy15926.github.io/categories/Python/Pywin32
    # https://www.php1.cn/detail/win32print_SheZh_25df7a0c.html
    import win32api, win32con
    printaccess = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS} # 获取最高权限
    try:
        # 获取指定打印机句柄
        handle = win32print.OpenPrinter(device_name, printaccess)
        #关闭打印机
        win32print.ClosePrinter(handle)
        # 获取指定打印机句柄
        handle = win32print.OpenPrinter(device_name, printaccess)
        properties = win32print.GetPrinter(handle, 2)
        devmode = properties['pDevMode']
        print('devmode:', devmode)

        devmode.FormName = "test1"  # 打印机首选项中,页面设置的名称
        devmode.PaperSize = 0   # 纸号 默认0 则PaperLength,PaperWidth有效 或者设置 win32con.DMPAPER_B5 表示纸号为B5
        devmode.PaperLength = 150  #
        devmode.PaperWidth = 250
        devmode.Copies = 1 #要打印的份数
        # devmode.Scale = 0 #缩放
        devmode.Duplex = win32con.DMDUP_SIMPLEX  # 单面
        devmode.Orientation = win32con.DMORIENT_LANDSCAPE  # 横向打印
        properties['pDevMode'] = devmode
        win32print.SetPrinter(handle, 2, properties, 0)
        # 检查默认设置是否成功
        print(win32print.GetPrinter(handle, 2)['pDevMode'].PaperWidth)
        print(win32print.GetPrinter(handle, 2)['pDevMode'].PaperLength)
    except Exception as first:
        print(f'first:{first}')

你可能感兴趣的:(python,java,开发语言)