当前位置: 首页 > 面试题库 >

用Python静默打印PDF

马泰
2023-03-14
问题内容

我正在尝试使用Python打印PDF,而不打开PDF查看器应用程序(Adobe,Foxit等)。我还需要知道打印何时完成(删除文件)。

在这里,我找到了这个 实现

import win32ui, dde, os.path, time
from win32api import FindExecutable
from os import spawnl, P_NOWAIT
...
pd = "C:\\temp\\test.pdf"
pdbits = os.path.split(pd)
readerexe = FindExecutable(pdbits[1],pdbits[0])

spawnl(P_NOWAIT,readerexe[1],"DUMMY") #I added "DUMMY" to avoid a weird error

time.sleep(2)

s = dde.CreateServer()
s.Create('')
c = dde.CreateConversation(s)
c.ConnectTo('acroview', 'control')

c.Exec('[FilePrintSilent("%s")]' % (pd,))

s.Destroy()

但这会抛出以下异常ConnectTo

dde.error: ConnectTo failed

有人知道如何解决吗?还是对于静音打印有 其他解决方案 ?或at list可以提供指向
参考ConnectTo的链接?在网络上找不到任何有关它的信息。

使用:Python 2.7,Windows 7,Acrobat Reader 10.0


问题答案:

我建议您安装GSView和GSPrint并脱壳gsprint.exe以打印pdf。

p = subprocess.Popen([r"p:\ath\to\gsprint.exe", "test.pdf"], 
                     stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
print stdout
print stderr

我已经在工业标签打印解决方案中使用了它,效果很好。

gsprint.exe程序退出时(即,在调用之后communicate),您可以删除pdf文件。



 类似资料:
  • 问题内容: 我有一个PDF文档,我想用我的python应用程序打印它。 我在这里尝试了解决方案(使用python的win32print模块打印PDF文档吗?),但是当我安装Ghostscript 9.15(即实际版本)时,它没有 我使用该命令的方式起作用,但是它会打开默认查看器(我的浏览器是Adobe Reader),并且在打印后它仍然保持打开状态,试图通过杀死其他打开的窗口来终止该进程,但我不希

  • 问题内容: 我们正在研究从Java内部以静默方式打印PDF文档。打印将从桌面而不是通过浏览器调用,因此我们不能使用JavaScript。PDF Renderer是可操作的解决方案,但其渲染质量不可接受。iText似乎不可与Java打印服务插入。有一些商业Java库,Qoppa的jPDFPrint,JPedal和ICEpdf,我们还没有尝试过。 是否有人对使用Java进行PDF静默打印有任何经验?

  • 本文向大家介绍electron实现静默打印的示例代码,包括了electron实现静默打印的示例代码的使用技巧和注意事项,需要的朋友参考一下 前言 electron+vuecli3 实现设置打印机,静默打印小票功能 网上相关的资料比较少,这里给大家分享一下,希望大家可以少踩一些坑 github地址 必须要强调一下的是electron的版本必须是3.0.0不能,我尝试了4和5都没有实现 效果图 使用

  • 问题内容: 在Python中打印XML的最佳方法(或多种方法)是什么? 问题答案:

  • 在web应用开发中都有报表打印等需求。不少开发者的做法是在后台生成PDF文件,然后通过浏览器显示浏览。现代浏览器大都支持PDF显示、打印,但是不支持静默打印,因此带给最终用户的体验不好。浏览器如何实现静默打印PDF呢?

  • 问题内容: 我刚开始学习Python,目前正在读一本教我的书,在这本书中,一个函数与我在下面编写的函数一样,会打印第一个函数中定义的实际文本。我运行我的脚本说: 作为输出。我究竟做错了什么?我安装了错误的Python或其他东西吗?我下载了3.3.0版本 这是我的代码: 问题答案: 您的函数已经打印了文本,您不需要打印函数。只是称呼他们(别忘了括号)。