更改打印机首选项设置

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}')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值