我正在尝试使用 win32print 模块打印 PDF 文档。显然这个模块只能接受 PCL 或原始文本。那是对的吗?
如果是这样,是否有可用于将 PDF 文档转换为 PCL 的模块?
我考虑使用 ShellExecute;但是,这不是一个选项,因为它只允许打印到默认打印机。我需要通过各种网络打印到服务器上的各种打印机。
谢谢你的帮助,皮特
我正在尝试使用 win32print 模块打印 PDF 文档。显然这个模块只能接受 PCL 或原始文本。那是对的吗?
如果是这样,是否有可用于将 PDF 文档转换为 PCL 的模块?
我考虑使用 ShellExecute;但是,这不是一个选项,因为它只允许打印到默认打印机。我需要通过各种网络打印到服务器上的各种打印机。
谢谢你的帮助,皮特
我最终使用Ghostscript来完成这项任务。有一个命令行工具依赖于 Ghostscript,称为gsprint。
您甚至不需要安装 Acrobat 就可以以这种非常好的方式打印 PDF。
这是一个例子:
在命令行上:
gsprint -printer \\server\printer "test.pdf"
来自蟒蛇:
win32api.ShellExecute(0, 'open', 'gsprint.exe', '-printer "\\\\' + self.server + '\\' + self.printer_name + '" ' + file, '.', 0)
请注意,我已在这些示例中添加到我的 PATH 变量中,因此在调用可执行文件时我不必包含整个路径。
然而,有一个缺点。该代码在 GPL 下获得许可,因此在商业软件中不是很有用。
希望这可以帮助某人,皮特
我已经在使用 win32api.ShellExecute 方法,需要打印到非默认打印机。我能解决的最好方法是临时更改默认打印机。因此,在我进行打印之前,我会存储当前默认打印机的内容,对其进行更改,然后在打印后将其重新设置。就像是:
tempprinter = "\\\\server01\\printer01"
currentprinter = win32print.GetDefaultPrinter()
win32print.SetDefaultPrinter(tempprinter)
win32api.ShellExecute(0, "print", filename, None, ".", 0)
win32print.SetDefaultPrinter(currentprinter)
我不会声称它很漂亮,但它确实有效,并且它允许我保持我的其他代码不变。
我不确定如何专门让 win32print 工作,但可能还有其他几个选项。 从 Python 创建 PDF 时经常提到Reportlab 。如果您已经对您的方法进行了投资,也许使用PyX或pypsg生成 Postscript 文件,然后将其输入 win32print 将起作用。