Проблемы с просмотром PDF - PullRequest
       7

Проблемы с просмотром PDF

2 голосов
/ 24 января 2011

Платформа: Linux, GTK +

Инструменты: Python, PyGTK и Glade.

Проблема:

  • Я хотел бы написать программу, способную отображать файл PDF.

Вопрос:

  • Какой виджет (s) и модуль (и) Python мне нужен?

Спасибо за любые предложения!

Ответы [ 3 ]

2 голосов
/ 07 февраля 2011

загляните в привязки python poppler.

Я рендеринг PDF-файлов в простой грязной форме. Я скопировал метод, использованный в примере для привязок Python Poppler GTK

def load_pdf(self):
    self.doc = poppler.document_new_from_file (uri, None)
    # the number of pages in the pdf
    self.n_pgs = self.document.get_n_pgs()
    # the current page of the pdf
    self.curr_pg = 0
    # the current page being displayed
    self.curr_pg_disp = self.document.get_page(self.curr_pg)
    # the scale of the page
    self.scale = 1
    # the document width and height
    self.doc_width, self.doc_height = self.curr_pg_disp.get_size()


def render_pdf(self):
    cr = self.pdfda.window.cairo_create()
    cr.set_source_rgb(1, 1, 1)
    if self.scale != 1:
        cr.scale(self.scale, self.scale)
    cr.rectangle(0, 0, self.doc_width, self.doc_height)
    cr.fill()
    self.curr_pg_disp.render(cr)

def on_next_btn_clicked(self, widget, data=None):
    if self.curr_pg < self.n_pgs:
        self.curr_pg = self.curr_pg + 1
        self.curr_pg_disp = self.doc.get_page(self.curr_pg)
        self.render_page()

def on_prev_btn_clicked(self, widget, data=None):
    if self.curr_pg > 0:
        self.curr_pg = self.curr_pg - 1
        self.curr_pg_disp = self.doc.get_page(self.curr_pg)
        self.render_page()

Это не самый лучший или самый красивый, но это работает. Я все еще должен добавить, как сделать его прокручиваемым или центрировать в области рисования и все в таком духе, но есть начало.

Вы также можете изучить привязки evince для python, я верю, что у них есть виджет, который вы можете использовать для облегчения рендеринга в pdf. Я занимаюсь разработкой для Windows, поэтому я не использовал его, если он есть.

0 голосов
/ 24 января 2011
0 голосов
/ 24 января 2011

Не GTK, а wxPython:

В этом примере показан класс PDF Viewer, который обрабатывает такие вещи, как Zoom и Scrolling. Требуется python-poppler и wxPython> = 2.8.9.

...