首页 > 解决方案 > 使用python打印(非默认联网打印机)

问题描述

我有一些代码可以为联网标签打印机生成标签:

import win32ui
dc = win32ui.CreateDC()
dc.CreatePrinterDC()
dc.StartDoc('Label Document')
dc.StartPage()
fontdata = {'height':80}
font = win32ui.CreateFont(fontdata)
dc.SelectObject(font)
dc.TextOut(0,10,'Sample: 3174')
dc.TextOut(0,90,'Date:26/02/21')
dc.TextOut(0,180,'sample_name')
dc.EndPage()
dc.EndDoc()

这很好用,并在默认情况下打印到标签打印机,但将来我想为此指定不同的打印机。我尝试将打印机的名称添加到 CreatePrinterDC 行,但是我添加它,它不接受它。有没有办法获得可用的打印机列表或以这种方式指定网络打印机的一些语法?

标签: pythonwinapiprinting

解决方案


您可以使用该wmi模块。

  • pip install wmi
import wmi

c = wmi.WMI()
print(c.Win32_PrinterShare)

这将为您提供有关已连接网络打印机的信息。这是 microsoft C++ win32 文档,但由于wmi是所有这些类的包装器,因此无论如何您都可以获得有价值的信息。

例如,print(c.Win32_Printer.DeviceId)如果至少连接了一个,您可以并且将返回打印机 ID,否则将返回 None。

您现在应该在此处阅读可以使用的可用方法和类:win32 info


推荐阅读