python-3.xpygtkpygobjectpdf-readerpdf-rendering

Displaying PDF files with python3


I want to write a python3/PyGTK3 application that displays PDF files and I was not able to find a python package that allows me to do that.
There is pypoppler, but it looks outdated (?) and does not seem to support python3 (?)

Do you have any suggestions?

EDIT: Note, that I don't need fancy features, like pdf forms, manipulation or writing.


Solution

  • It turns out, that newer versions of poppler-glib don't require bindings as such. They ship with GObject Introspection files and can therefore be imported and used as follows:

    #!/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())
    

    That was easy, wasn't it? It took me hours to find that out ...

    Note that one needs at least poppler-0.18, if one wants to import GTK as well.

    Here is another minimal example with a 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()