使用python 2.7.5将pdf文件打印到“Adobe pdf”打印机
Posted
技术标签:
【中文标题】使用python 2.7.5将pdf文件打印到“Adobe pdf”打印机【英文标题】:Print pdf file to "Adobe pdf" printer using python 2.7.5 【发布时间】:2015-10-19 17:40:51 【问题描述】:我正在尝试从 python 2.7.5 脚本中将 pdf 文件打印到“Adobe pdf”打印机。通过这样做,文件大小大大减小。
文件名和路径是:
pdfdoc = theDir + "\" + clientName + "-Stats.pdf"
关于如何解决这个问题的建议?
我尝试了以下代码,但由于它正在打印到“Adobe pdf”打印机,我得到一个“另存为”对话框,这是我不想要的。
from subprocess import call
acrobat = "C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat\Acrobat.exe"
pdfdoc = theDir + "\\" + clientName + "-Stats.pdf"
printer = "Adobe pdf"
call([acrobat, "/T", pdfdoc, printer])
【问题讨论】:
要以这种方式使用 Acrobat 需要某种方式通过某些命令行参数指定输出 pdf 文件名,但似乎没有。 Adobe 自己的文档说“您可以使用 Acrobat 和 Adobe Reader 从命令行显示和打印 PDF 文件。这些命令不受支持,但对一些开发人员有用。” “Adobe PDF”打印机与 Acrobat 不同,尽管它包含在其中 - 这就是提示您输入文件名的原因,而不是 Acrobat 本身。你也许可以使用 GhostScript 做你想做的事。 研究似乎表明,如果不使用 GhostScript 之类的东西就无法完成,我想避免这种情况,因为这需要每个执行脚本的人都将其安装在他们的计算机上。 我很好奇为什么文件大小会大幅减小。如果只是因为删除了 PDF 的非打印元素,也许您可以通过 PDF 库传递它来获得相同的结果。例如,cat 到 pdfrw。这是我编写的一个库——如果它没有实现类似的大小缩减,我会对查看原始 PDF 和压缩 PDF 感兴趣。 【参考方案1】:我解决这个问题的方法是打开 Adobe PDF 驱动程序的打印机首选项(控制面板\硬件和声音\设备和打印机)并手动设置 Adobe PDF 输出文件夹。请参阅下面的屏幕截图链接到屏幕截图:
Adobe PDF Driver Printer Preferences
我还取消了“查看结果”的选择,但这是可选的。
您可能还需要重命名新的 PDF 文件。我在将文件移动到不同目录时使用shutil 和重命名来完成此操作,但您也可以使用os.rename()。我不知道如何通过 Python 访问 Adobe 以在打印过程中输入新文件名,但我怀疑这是可能的。
希望这会有所帮助。
【讨论】:
以上是关于使用python 2.7.5将pdf文件打印到“Adobe pdf”打印机的主要内容,如果未能解决你的问题,请参考以下文章