使用python'打印PDF文档;是win32print模块吗?

使用python'打印PDF文档;是win32print模块吗?,python,windows,pdf,winapi,postscript,Python,Windows,Pdf,Winapi,Postscript,我正在尝试使用win32print模块打印PDF文档。显然,此模块只能接受PCL或原始文本。对吗 如果有,是否有模块可用于将PDF文档转换为PCL 我考虑使用ShellExecute;但是,这不是一个选项,因为它只允许打印到默认打印机。我需要打印到各种网络服务器上的各种打印机 谢谢你的帮助, Pete我不确定如何具体地让win32print工作,但可能还有几个其他选项。从Python创建PDF时经常提到。如果您已经投入到您的方法中,可能使用或生成Postscript文件,然后将其输入到win32

我正在尝试使用win32print模块打印PDF文档。显然,此模块只能接受PCL或原始文本。对吗

如果有,是否有模块可用于将PDF文档转换为PCL

我考虑使用ShellExecute;但是,这不是一个选项,因为它只允许打印到默认打印机。我需要打印到各种网络服务器上的各种打印机

谢谢你的帮助,
Pete

我不确定如何具体地让win32print工作,但可能还有几个其他选项。从Python创建PDF时经常提到。如果您已经投入到您的方法中,可能使用或生成Postscript文件,然后将其输入到win32print中就可以了。

我最终使用来完成此任务。有一个命令行工具依赖于名为的Ghostscript

您甚至不需要安装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)

我不想说它很漂亮,但它起了作用,让我的其他代码保持不变。

我已经在使用ReportLab创建PDF了。现在需要打印。您可以这样做,也可以将Ghostscript输出到打印机支持的任何lanugage,如PCL/Postscript。这样做的好处是,如果需要,您可以打开输出文件并插入用于托盘选择等的命令。如果您使用较旧版本的Ghostscript,如7.06/7.07,我相信这些都是在GNU下许可的,因此这可能会解决您的许可问题。GPL不一定是一个缺点。;)我知道这篇文章很老了,但是我如何用实际的Ghostscript 9.15调用gsprint.exe,我找不到具有该名称的exe,我不知道如何使用Gsostscript应用程序gswin32.exe。你需要安装gsview。gsprint包含在gsview 3.4及更高版本中。安装gsview后,gsprint.exe应与gsview可执行文件位于同一目录中。