我正在尝试使用win32print模块打印PDF文档。显然,该模块只能接受PCL或纯文本。这是正确的吗?
如果是这样,是否有可用的模块将PDF文档转换为PCL?
我考虑使用ShellExecute; 然而,这不是一个选项,因为它只允许打印到默认打印机。我需要打印到各种网络上的服务器上的打印机。
谢谢你的帮助, Pete
我正在尝试使用win32print模块打印PDF文档。显然,该模块只能接受PCL或纯文本。这是正确的吗?
如果是这样,是否有可用的模块将PDF文档转换为PCL?
我考虑使用ShellExecute; 然而,这不是一个选项,因为它只允许打印到默认打印机。我需要打印到各种网络上的服务器上的打印机。
谢谢你的帮助, Pete
我最终使用Ghostscript来完成这个任务。有一个依赖于Ghostscript的命令行工具,叫做gsprint。
你甚至不需要安装Acrobat就能以这种方式打印PDF文件,这非常方便。
这里有一个例子:
在命令行上:
gsprint -printer \\server\printer "test.pdf"
来自 Python:
win32api.ShellExecute(0, 'open', 'gsprint.exe', '-printer "\\\\' + self.server + '\\' + self.printer_name + '" ' + file, '.', 0)
请注意,在这些示例中,我已将PATH变量添加到系统路径中,因此在调用可执行文件时不必包含整个路径。
但是,有一个缺点。该代码使用GPL许可证,因此对于商业软件来说并不是很有用。
希望这能帮助到某些人, Pete
我已经使用了win32api.ShellExecute方法,但需要打印到非默认打印机。我能想到的最好方法是暂时更改默认打印机。所以在打印之前,我会存储当前的默认打印机,然后更改它,在打印后再将其设置回来。类似这样:
tempprinter = "\\\\server01\\printer01"
currentprinter = win32print.GetDefaultPrinter()
win32print.SetDefaultPrinter(tempprinter)
win32api.ShellExecute(0, "print", filename, None, ".", 0)
win32print.SetDefaultPrinter(currentprinter)