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