如何在 Windows 中将 docx 打印到特定(非默认)打印机?

问题描述 投票:0回答:1

我一直在探索如何以自动方式将文档打印到特定打印机。不幸的是,我在研究中发现的只是如何更改默认打印机,然后打印,然后切换回默认打印机。

有时,默认打印机不会切换回原来的默认打印机,从而导致文档打印在错误的纸张上。

有没有办法只使用

打印到特定打印机
  • win32api
  • win32打印

我也对不使用这些库的其他方法持开放态度。

这是我的代码:

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 库,但在不更改默认打印机的情况下,未能成功将其打印到其他打印机,然后打印,然后改回默认打印机。

python windows winapi printing
1个回答
0
投票

根据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
)

我可以确认它效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.