当前位置: 代码网 > it编程>前端脚本>Python > Python如何根据页码处理PDF文件的内容

Python如何根据页码处理PDF文件的内容

2024年07月04日 Python 我要评论
1.环境准备pymupdf: 是wxwidgets在python语言下的封装,处理pdf文件的库,提供了读取、提取和创建pdf文件的功能;wxwidgets是一个跨平台的gui应用编程接口,使用c++

1.环境准备

  • pymupdf: 是wxwidgets在python语言下的封装,处理pdf文件的库,提供了读取、提取和创建pdf文件的功能;wxwidgets是一个跨平台的gui应用编程接口,使用c++编写。
  • wxpython: 基于wxwidgets的python包,用于创建跨平台的图形用户界面(gui)应用程序。
  • fitz: fitz库是一个基于python开发的pdf处理库,它是pymupdf的前身。fitz提供了一系列的api和功能,可以用于读取、编辑和生成pdf文件。此外,它还可以处理其他类型的图像,如tiff和jpeg,提供图像处理功能,如旋转、裁剪、缩放、调整亮度、对比度和色彩平衡等。
  • 在python中,fitz库可以用于多种任务,如打开pdf文件、遍历页面、添加注释、提取文本、旋转页面等。此外,它还可以用于在pdf页面上添加高亮注释、提取图像等操作。
pip install pil
pip install fitz
pip install pymupdf
pip install wxpython
# pip install 库包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
# pip install wxpython -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com       

2.python参考代码

创建1个简单的gui应用程序,它将允许用户选择要打开的pdf文件,并输入开始页码和结束页码。然后,点击"extract"按钮将提取指定范围内的页面并将其保存为新的pdf文件

import fitz
import wx
class pdfextractor(wx.frame):
    def __init__(self, parent):
        wx.frame.__init__(self, parent, id=wx.id_any, title=u"pdf extractor", pos=wx.defaultposition,
                          size=wx.size(500, 254), style=wx.default_frame_style | wx.tab_traversal,
                          name=u"pdf extractor")
        self.setsizehintssz(wx.defaultsize, wx.defaultsize)
        self.setforegroundcolour(wx.systemsettings.getcolour(wx.sys_colour_window))
        self.setbackgroundcolour(wx.systemsettings.getcolour(wx.sys_colour_activecaption))
        bsizer2 = wx.boxsizer(wx.vertical)
        self.m_filepicker2 = wx.filepickerctrl(self, wx.id_any, wx.emptystring, u"select a file", u"*.*",
                                               wx.defaultposition, wx.defaultsize, wx.flp_default_style)
        self.m_filepicker2.setfont(wx.font(9, 74, 90, 92, false, "微软雅黑"))
        self.m_filepicker2.setforegroundcolour(wx.systemsettings.getcolour(wx.sys_colour_highlight))
        self.m_filepicker2.setbackgroundcolour(wx.systemsettings.getcolour(wx.sys_colour_highlight))
        bsizer2.add(self.m_filepicker2, 0, wx.all | wx.expand, 5)
        self.m_statictext5 = wx.statictext(self, wx.id_any, u"start page:", wx.defaultposition, wx.defaultsize, 0)
        self.m_statictext5.wrap(-1)
        self.m_statictext5.setfont(wx.font(9, 74, 90, 92, true, "微软雅黑"))
        self.m_statictext5.setforegroundcolour(wx.systemsettings.getcolour(wx.sys_colour_btntext))
        bsizer2.add(self.m_statictext5, 0, wx.all, 5)
        self.m_textctrl1 = wx.textctrl(self, wx.id_any, wx.emptystring, wx.defaultposition, wx.defaultsize, 0)
        bsizer2.add(self.m_textctrl1, 0, wx.expand, 5)
        self.m_statictext6 = wx.statictext(self, wx.id_any, u"end page:", wx.defaultposition, wx.defaultsize, 0)
        self.m_statictext6.wrap(-1)
        self.m_statictext6.setfont(wx.font(9, 74, 90, 92, true, "微软雅黑"))
        self.m_statictext6.setforegroundcolour(wx.systemsettings.getcolour(wx.sys_colour_btntext))
        bsizer2.add(self.m_statictext6, 0, wx.all, 5)
        self.m_textctrl2 = wx.textctrl(self, wx.id_any, wx.emptystring, wx.defaultposition, wx.defaultsize, 0)
        bsizer2.add(self.m_textctrl2, 0, wx.expand, 5)
        self.m_button18 = wx.button(self, wx.id_any, u"extract", wx.defaultposition, wx.defaultsize, wx.no_border)
        self.m_button18.setfont(wx.font(12, 74, 90, 92, false, "微软雅黑"))
        self.m_button18.setforegroundcolour(wx.systemsettings.getcolour(wx.sys_colour_btntext))
        self.m_button18.setbackgroundcolour(wx.systemsettings.getcolour(wx.sys_colour_btnhighlight))
        self.m_button18.bind(wx.evt_button, self.extract_pages)
        bsizer2.add(self.m_button18, 0, wx.align_center_horizontal | wx.shaped, 5)
        self.setsizer(bsizer2)
        self.layout()
        self.centre(wx.both)
    def __del__(self):
        pass
    def extract_pages(self, event):
        file_path = self.m_filepicker2.getpath()
        start_page = int(self.m_textctrl1.getvalue())
        end_page = int(self.m_textctrl2.getvalue())
        doc = fitz.open(file_path)
        output_doc = fitz.open()
        for page_num in range(start_page - 1, end_page):
            output_doc.insert_pdf(doc, from_page=page_num, to_page=page_num)
        output_path = file_path.replace(".pdf", "_extracted.pdf")
        output_doc.save(output_path)
        output_doc.close()
        doc.close()
        wx.messagebox("extraction complete!", "success", wx.ok | wx.icon_information)
# app = wx.app()
# pdfextractor(none, title="pdf extractor")
# app.mainloop()
if __name__ == '__main__':
    app = wx.app()  # 运行wx.app()方法。认为窗体是一个独立运行的app,所以要定义一个app的程序类来让窗体执行,调用wx类库对应的app方法来生成应用程序的类对象:wx.app()
    frame = pdfextractor(none)  # 调用frame类,并且不指定父类,当前就成为父类
    frame.show()  # 运行展示界面的方法show()
    app.mainloop()  # 进入程序wx.app()循环

wxformbuilder配置效果

运行效果

3.其他参考

https://blog.csdn.net/winniezhang/article/details/134924216wxformbuilder

工具下载地址【python012】

python根据页码处理pdf文件的内容

到此这篇关于python根据页码处理pdf文件的内容的文章就介绍到这了,更多相关python页码处理pdf文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com