Python使用win32print实现打印机控制(一)

最近因为项目需要,需要对打印机进行控制和管理,除了常规的打印页面设置,还需要对打印机状态进行监控,如忙、空闲、缺纸、缺墨等问题。
用Java的print api搞了好久,结果不尽人意。改投python的win32print api门下。

1、引入包

import win32print
import win32ui
import win32con 

2、获取打印机

    #获取默认打印机
    printername = win32print.GetDefaultPrinter()
    #设置权限
    PRINTER_DEFAULTS = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS}
    #按照指定名称获取打印机
    pHandle = win32print.OpenPrinter("Panasonic KX-MB1678 GDI", PRINTER_DEFAULTS)
    pHandle = win32print.OpenPrinter(printername, PRINTER_DEFAULTS)
    printerscl=win32print.GetPrinter(pHandle, 2)
    #此处返回值存在问题:getprinter里面传入1 返回一个元组,传入2返回一个字典

3、返回打印机属性和参数
以返回字典类型为例

    for it in printerscl:
      print(it + ':' + str(printerscl[it]))
      print(type(printerscl[it]))
      
      # if str(it)=='pDevMode':
      #   for itp in printerscl[it]:
      #       print(itp + ':' + str(printerscl[it][itp]))
      # if str(it)=='pDevMode':
      #     for n in dir(printerscl[it]):
      #       print(n,getattr(printerscl[it],n))

      # if str(it)=='pSecurityDescriptor':
      #     for its in printerscl[it]:
      #         print(its + ':' + str(printerscl[it][its]))

      if str(it)=='pSecurityDescriptor':
          for n in dir(printerscl[it]):
              print(n,getattr(printerscl[it],n))


    win32print.ClosePrinter(pHandle)

返回值
在这里插入图片描述
可以看到倒数第三项存在一个status参数。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值