Skip to main content
 首页 » 编程设计

python之查看 PDF 的问题

2025年05月04日10linjiqin

平台:Linux、GTK+

工具:Python、PyGTK 和 Glade。

问题:

  • 我想编写一个能够显示 PDF 文件的程序。

问题:

  • 我需要哪些小部件和 Python 模块?

感谢您的任何建议!

请您参考如下方法:

查看 python poppler 绑定(bind)。

我以一种简单肮脏的方式呈现 pdf 文件。我复制了示例中用于 python poppler gtk 绑定(bind)的方法

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 绑定(bind),我相信他们有一个小部件,您可以使用它来简化 pdf 渲染。我在 windows 上开发,所以如果有的话我还没有使用它。