win32print 和多个打印机

0 投票
1 回答
4672 浏览
提问于 2025-04-17 06:49

我想打印一个本地的PDF文件。如果定义了printer_name(一个普通的字符串),程序应该把文件发送到指定的打印机;否则,就应该使用默认的打印机。

这段代码是可以运行的,但无论如何都使用了默认打印机!

global printer_name
if printer_name:
    print "printer",nome_stampante
else:
    nome_stampante = win32print.GetDefaultPrinter()
    print "default printer"

out = '/d:"%s"' % nome_stampante

win32api.ShellExecute (
    0,
    "print",
    filename,
    out,
    ".",
    0
)

请问哪里出错了?

非常感谢!

1 个回答

2

你的代码使用了全局变量,但没有人知道printer_name是在哪里设置的,以及nome_stampante里面有什么。我建议你使用一个函数来打印文件,这个函数可以选择使用哪个打印机。这个函数可以像下面这样写:

import win32api
import win32print

def win_print(filename, printer_name = None):
    if not printer_name:
        printer_name = win32print.GetDefaultPrinter()
    out = '/d:"%s"' % (printer_name)
    win32api.ShellExecute(0, "print", filename, out, ".", 0)


def test_print():
    win_print('test.txt')
    win_print('test.txt', 'PDFCreator')


if __name__ == '__main__':
    test_print()

撰写回答