2012-03-13 1 views
9

Я хочу написать приложение python3/PyGTK3, которое отображает файлы PDF, и я не смог найти пакет python, который позволяет мне это сделать.
Существует pypoppler, но он выглядит устаревшим (?), И, кажется, не поддерживает python3 (?)Просмотр файлов PDF с помощью python3

Есть ли у вас какие-либо предложения?

EDIT: обратите внимание, что мне не нужны модные функции, такие как форматы PDF, манипуляции или запись.

+0

хочет создать PDF-файлы ?? –

+0

Нет, и, скорее всего, этого никогда не придется. –

+0

ok ... bt i предоставил u ссылку ... до того, как этот комментарий придет .... bt u can chck that also .. –

ответ

11

Оказывается, что более новые версии poppler-glib не требуют привязок как таковых. Они поставляются с GObject интроспекции файлов и, следовательно, могут быть импортированы и использованы следующим образом:

#!/usr/bin/python3 

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.

Вот еще один минимальный пример с графическим интерфейсом:

#!/usr/bin/python3 

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() 
1

This post говорит, что последняя версия версии Evince (которая, я думаю, скоро станет 3.4) поддерживает внедрение через PyGObject, что, вероятно, будет работать для ваших целей.

+0

Я не думаю, что это было бы, потому что я не мог получить доступ и изменить pixmap. Я хочу использовать пакет для рендеринга файла pdf в pixmap, изменить его с помощью (скажем) cairo и отобразить его. Извините, если мой вопрос не был достаточно ясным –

Смежные вопросы