我想编写一个显示 PDF 文件的 python3/PyGTK3 应用程序,但我找不到允许我这样做的 python 包。
有pypoppler,但它看起来已经过时(?)并且似乎不支持 python3(?)
你有什么建议吗?
编辑:请注意,我不需要花哨的功能,例如 pdf 表单、操作或写作。
我想编写一个显示 PDF 文件的 python3/PyGTK3 应用程序,但我找不到允许我这样做的 python 包。
有pypoppler,但它看起来已经过时(?)并且似乎不支持 python3(?)
你有什么建议吗?
编辑:请注意,我不需要花哨的功能,例如 pdf 表单、操作或写作。
事实证明,较新版本的 poppler-glib 不需要这样的绑定。它们附带 GObject Introspection 文件,因此可以按如下方式导入和使用:
#!/usr/bin/python3
import gi
gi.require_version('Poppler', '0.18')
from gi.repository import Poppler
document = Poppler.Document.new_from_file("file:///home/me/some.pdf", None)
print(document.get_pdf_version_string())
那很容易,不是吗?我花了几个小时才发现...
请注意,如果还想导入 GTK,至少需要 poppler-0.18。
这是另一个带有 GUI 的最小示例:
#!/usr/bin/python3
import gi
gi.require_version('Poppler', '0.18')
gi.require_version('Gtk', '3.0')
from gi.repository import Poppler, Gtk
def draw(widget, surface):
page.render(surface)
document = Poppler.Document.new_from_file("file:///home/me/some.pdf", None)
page = document.get_page(0)
window = Gtk.Window(title="Hello World")
window.connect("delete-event", Gtk.main_quit)
window.connect("draw", draw)
window.set_app_paintable(True)
window.show_all()
Gtk.main()
这篇文章说 Evince 的最新开发版本(我猜它很快就会变成 3.4)支持通过 PyGObject 嵌入,这可能适用于您的目的。