我一直在探索如何以自动方式将文档打印到特定打印机。不幸的是,我在研究中发现的只是如何更改默认打印机,然后打印,然后切换回默认打印机。
有时,默认打印机不会切换回原来的默认打印机,从而导致文档打印在错误的纸张上。
有没有办法只使用
打印到特定打印机我也对不使用这些库的其他方法持开放态度。
这是我的代码:
length = len(win32print.EnumPrinters(2))
for i in range(0,length):
if win32print.EnumPrinters(2)[i][2] == "ZDesigner GX430t":
zebra_printer = win32print.EnumPrinters(2)[i][2]
win32print.SetDefaultPrinter(zebra_printer)
win32api.ShellExecute(0, "print", filename, None, ".", 0)
for i in range(0,length):
if win32print.EnumPrinters(2)[i][2] == "Brother MFC-9340CDW Printer":
brother_printer = win32print.EnumPrinters(2)[i][2]
win32print.SetDefaultPrinter(brother_printer)
我尝试使用 win32api 和 win32print 库,但在不更改默认打印机的情况下,未能成功将其打印到其他打印机,然后打印,然后改回默认打印机。
根据pywin32文档,您可以使用
win32.ShellExecute
指定打印机:
import tempfile
import win32api
import win32print
filename = tempfile.mktemp (".txt")
open (filename, "w").write ("This is a test")
win32api.ShellExecute (
0,
"print",
filename,
#
# If this is None, the default printer will
# be used anyway.
#
'/d:"%s"' % win32print.GetDefaultPrinter (),
".",
0
)
我可以确认它效果很好。