是否有一个 PDF 查看器可以通过 dbus、管道或类似的东西从 Python 程序进行控制?
我有一个演示程序,可以在投影仪上显示 PDF 的同时显示我自己的笔记。现在,我的程序会生成 mupdf,并告诉它使用以下方式向前或向后导航:
subprocess.call('xdotool search mupdf key Next'.split())
它确实有效,但看起来很脆弱。
(Evince 通过 dbus 对 SyncTeX 有一些支持,但从源代码来看,Evince 似乎没有通过 dbus 公开任何其他功能。)
我不想重新发明轮子并制作自己的 PDF 查看器。是否有一些查看器我可以使用任何合理的进程间通信从 Python 进行控制?
答案1
既然您提到了演示幻灯片,那么使用 OpenOffice 或 LibreOffice Impress 怎么样?您可以将 Python 脚本绑定添加到 LibreOffice(在 Ubuntu 中安装 libreoffice-script-provider-python 包)但是我不知道 LibreOffice 可以提供什么来从“外部”进程调用它。据推测这可能更加“脆弱”,具体取决于它的实现方式。LibreOffice(或 OpenOffice)中的其他脚本语言也可能得到更好的支持——我提到 python 只是因为它在那里。
如果您想显示现有的 .pdf 文件,您可以将它们导入 Impress(也许通过 Draw)。