【问题标题】:win32print and multiple printerswin32print 和多台打印机
【发布时间】:2012-01-03 16:18:06
【问题描述】:

我应该打印一个本地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
)

错在哪里?

非常感谢

【问题讨论】:

  • 谢谢,printto 可以例外 :)

标签: python windows pdf printing win32com


【解决方案1】:

您的代码使用全局变量,没有人知道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()

【讨论】:

  • 这对我有用——测试程序生成 2 个 PDF 文件。至于我注册表中的打印命令,我有:%SystemRoot%\system32\NOTEPAD.EXE /p %1
  • 是的,PDFCreator 也是我的默认打印机 :)
  • 抱歉,nome_stampante 在意大利语中是“printer_name”。无论如何我改变了动词,现在它可以工作了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
相关资源
最近更新 更多