【问题标题】:Print PDF document with python's win32print module?使用 python 的 win32print 模块打印 PDF 文档?
【发布时间】:2010-11-30 13:48:22
【问题描述】:

我正在尝试使用 win32print 模块打印 PDF 文档。显然这个模块只能接受 PCL 或原始文本。那是对的吗?

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

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

感谢您的帮助, 皮特

【问题讨论】:

    标签: python windows pdf winapi postscript


    【解决方案1】:

    我不确定如何专门让 win32print 工作,但可能还有其他几个选项。在从 Python 创建 PDF 时,经常会提到 Reportlab。如果您已经投入到您的方法中,也许使用 PyXpypsg 生成 Postscript 文件,然后将其输入 win32print 将起作用。

    【讨论】:

    • 我已经在使用 ReportLab 创建 PDF。现在需要打印。
    【解决方案2】:

    我最终使用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 下获得许可,因此在商业软件中不是很有用。

    希望这对某人有所帮助, 皮特

    【讨论】:

    • 您可以这样做,或者将 Ghostscript 输出到打印机支持的任何语言,例如 PCL / Postscript。这样做的好处是,如果需要,您可以打开输出文件并插入用于选择托盘等的命令。
    • 如果您使用旧版本的 Ghostscript,例如 7.06/7.07,我相信这些是在 GNU 下获得许可的,因此它可能会解决您的许可问题。
    • GPL 不一定是劣势。 ;)
    • 我知道这篇文章很老了,但是我怎么能用实际的 Ghostscript 9.15 调用 gsprint.exe,我找不到那个名字的 exe,我不知道如何使用 gswin32 .exe 即 Ghostscript 应用程序。
    • 你需要安装gsview。 gsprint 包含在 gsview 3.4 及更高版本中。安装 gsview 后,gsprint.exe 应该与 gsview 可执行文件在同一目录中。
    【解决方案3】:

    我已经在使用 win32api.ShellExecute 方法,需要打印到非默认打印机。我能解决的最好方法是临时更改默认打印机。因此,在我进行打印之前,我会存储当前默认打印机的内容,对其进行更改,然后在打印后将其重新设置。比如:

    tempprinter = "\\\\server01\\printer01"
    currentprinter = win32print.GetDefaultPrinter()
    
    win32print.SetDefaultPrinter(tempprinter)
    win32api.ShellExecute(0, "print", filename, None,  ".",  0)
    win32print.SetDefaultPrinter(currentprinter)
    

    我不会声称它很漂亮,但它确实有效,它让我可以保持我的其他代码不变。

    【讨论】:

      猜你喜欢
      • 2017-01-08
      • 1970-01-01
      • 2016-10-09
      • 2022-08-16
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 2011-07-30
      • 2012-01-03
      相关资源
      最近更新 更多