Вставить evince Python GI - PullRequest
       4

Вставить evince Python GI

2 голосов
/ 20 января 2012

Я хочу просмотреть документ в формате PDF, встроив его в Python с помощью репозитория gi. Я пытаюсь следовать коду здесь , который

#!/usr/bin/env python

from gi.repository import Gtk, Gio
from gi.repository import EvinceDocument
from gi.repository import EvinceView

class HelloWorldApp(Gtk.Application):
   def __init__(self):
       Gtk.Application.__init__(self, application_id="apps.test.helloevince", flags=Gio.ApplicationFlags.FLAGS_NONE)
       self.connect("activate", self.on_activate)

   def on_activate(self, data=None):
       window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL)
       window.set_title("Evince Gtk3 Python Example")
       window.set_border_width(24)
       scroll = Gtk.ScrolledWindow()
       window.add(scroll)
       EvinceDocument.init()
       doc = EvinceDocument.Document.factory_get_document('file:///home/user/test.pdf')
       view = EvinceView.View()
       model = EvinceView.DocumentModel()
       model.set_document(doc)
       view.set_model(model)
       scroll.add(view)
       window.show_all()
       self.add_window(window)

if __name__ == "__main__":
   app = HelloWorldApp()
   app.run(None)

Но я получаю ошибку

Traceback (most recent call last):
  File "./pdfViewer_pygi.py", line 19, in on_activate
    doc = EvinceDocument.Document.factory_get_document('file:///home/user/test.pdf')
AttributeError: type object 'Document' has no attribute 'factory_get_document'

Очевидно, что нет метода factory_get_document. Какая тогда альтернатива ...? Как можно вставить PDF-документ, используя python и gtk + 3 ...?

1 Ответ

2 голосов
/ 30 января 2012

Вам нужна более новая версия Evince.

Это работает для меня в последней версии Evince, 3.3.3.1, использующей Fedora 17 (rawhide), и не работает в Evince 3.2.1, использующей Fedora 16.

Может быть, вы можете скомпилировать Evince, чтобы заставить работать привязки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...