千家信息网

Python如何利用PyPDF2快速拆分PDF文档

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Python如何利用PyPDF2快速拆分PDF文档",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python如何利用PyPDF2快
千家信息网最后更新 2026年11月02日Python如何利用PyPDF2快速拆分PDF文档

这篇文章主要讲解了"Python如何利用PyPDF2快速拆分PDF文档",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python如何利用PyPDF2快速拆分PDF文档"吧!

这个模块严格区分大小写,y是小写,其余大写

pip3 install PyPDF2

安装完成之后呢,在本地硬盘创建一个专门存放本项目的文件夹,我这里在的存放路径是 F:PythonPyPDF2,在F盘有个Python文件夹,在其中又创建了一个以这个模块命名的文件夹,来单独存放和与别的项目区分。

创建文件,准备PDF文档

Django官网下载了他的帮助文档,这个文档足够大,1900多页,对于练手绝对够了,有需要的去官网下载,然后再创建一个PDFCF.py 的项目文件。

万事俱备,准备开拆

程序开始两行,写上下边这两句,第一句的意思是指定这个文件的运行程序,第二句是对这个文件的说明,这个的作用现在还看不出来,但如果你知道怎么批量化快速执行程序,你就知道了它的作用,这里不做赘述。

#! python# PDFCF.py - pdf文件拆分程序

文档的拆分思路

不固定拆分成多少份,但固定每一份由多少页组成,然后来动态的计算拆分的份数,拆分思路有了,那么下来就是列出计算公式。

拆分的份数= 文档总页数 / 拆份每个pdf组成的页数

举个例子:

假如我们要拆分一个总页数为35页的pdf文档,按照每10页组成一个新文档,那么能拆分成多少份的计算公式如下:
3.5 = 35 / 10

这时候大家注意了,除不尽有余数0.5,说明什么?用这个例子来说就是拆分成3份还余下5页,那么遇到这种情况不管余数是几都得向前进1,才能完成整个拆分,这个文档拆分的结果就是,前3个文档每个由10页组成,第四个文档则由最后5页组成,能整除则结果直接就是拆分的份数。

python拆分计算公式:

if 35 % 10:        # 判断是否有余数    35 // 10 + 1   # 取余数整数部分加1else:    0              # 能整除则直接返回0  # 将这个循环写到一行4 = 35 // 10 + 1 if 35 % 10 else 0

具体怎么拆?

还是以这个35页的文档拆分为例:
循环遍历每一页数据 for num in range(35),得到每一页的数据,之后再指定拆分页数范围进行拆分:

  • 第一个文档从0--10,不包含10

  • 第二个文档从10--20 ,不包含20

  • 第三个文档从 20 -30,不包含30

  • 第四个文档从30--35,不包含35

我们发现规律,每次遍历第一个数字的规律是 一个文档的页数,乘以自己属于第几个便可以得到。第二个数我们发现没规律了,其实仔细观察也有规律,假如我们对拆分个数排序,这个例子就是1--4,第二个数字就是当前属于第几个拆分数乘以每个文档组成的页数(页数是固定的10)。
可是我们第一次遍历的时候从0开始,就让num变得不通用,那么我们改造一下从1开始遍历,range(1,35),从一开始遍历,基于range不包含本身最后一个的特性,这样遍历出来就少了一页文档,那么我们给他加1,变成

  • for num in range(1, 35+1)

  • 第一个文档从10*(1-1)--10*1,不包含10

  • 第二个文档从10*(2-1)--10*2 ,不包含20

  • 第三个文档从 10*(3-1) -10*3, 不包含30

  • 第四个文档从10(4-1)--35

具体遍历代码如下:

for num in range(1,35+1):    pass    for i in range(10 * (num-1), 10 * num if num != 4 else 35):        pass

注意:当遍历到 num = 4(最后一个文档排序数时),直接返回 总页数35就可以了,到这里遍历就结束了。这里为什么是总页数35 而不是35+1呢?是因为此次遍历我们是从0开始遍历的,页码从0开始,所以不需要加1了。

完整拆分程序:

import PyPDF2# 打开一个可读的pdf对象pdfReader = PyPDF2.PdfFileReader("django.pdf")# 获取pdf总页数pdfnums = pdfReader.numPages# 每个拆分文档由多少页组成innumber = 100# 计算拆分份数outnums = pdfnums // innumber + 1 if pdfnums % innumber else 0for num in range(1,pdfnums):    # 创建空白的pdf    pdfWriter = PyPDF2.PdfFileWriter()    # 提取指定页面范围    for pageNum in range(innumber * (num - 1), innumber * num if num != outnums else pdfnums):        # 获取到每一页的内容        pageObj = pdfReader.getPage(pageNum)        # 将每一页的内容添加到第一次循环创建的空白文档对象中        pdfWriter.addPage(pageObj)    # 保存并写入本地文件,并对每个文档重命名    with open("PDFREAD %s" % num + ".pdf", "wb") as pdfOutputFile:        pdfWriter.write(pdfOutputFile)

注意:上边这种拆分思路我个人感觉比较绕,如果你对Python列表的切边以及步长概念理解透彻的话,我觉得不需要这么复杂,只需要把总页码生成一个大列表,再把这个列表利用切片的方法拆分成多个小列表,之后每个拆分的pdf页码范围就是每个小列表第一个数--最后一个数+1,我把我用列表方法实现的代码也贴出来供大家参考。

列表拆分法实现拆分PDF

#! python# PDFCF.py - pdf文件拆分程序import PyPDF2# import LISTCF# 打开一个可读的pdf对象pdfReader = PyPDF2.PdfFileReader("django.pdf")# 获取pdf总页数pdfnums = pdfReader.numPages  # 将总页码循环到一个列表中pagenum_list = list(range(pdfnums))n = 100# 将总页码按照指定的个数分为多个小列表page_list = [pagenum_list[i:i + n] for i in range(0, len(pagenum_list), n)]for i in range(len(page_list)):  # 创建一个空白的pdf  pdfWriter = PyPDF2.PdfFileWriter()  # 提取指定页面  for pageNum in range(page_list[i][1], page_list[i][-1]+1):    pageObj = pdfReader.getPage(pageNum)    pdfWriter.addPage(pageObj)  with open("PDFREAD %s" % i + ".pdf", "wb") as pdfOutputFile:    pdfWriter.write(pdfOutputFile)

怎么用?

在项目文件夹内部按住Shift键,点击鼠标右键,选择在此处打开命令窗口,输入PDFCF.py,回车即可,根据自己的需求去更改 n 的值。

感谢各位的阅读,以上就是"Python如何利用PyPDF2快速拆分PDF文档"的内容了,经过本文的学习后,相信大家对Python如何利用PyPDF2快速拆分PDF文档这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

文档 文件 页数 就是 程序 个数 页码 份数 内容 思路 文件夹 规律 循环 公式 对象 空白 范围 项目 学习 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 互联网科技官网 厦门中拓互联网络科技有限公司 美国互联网黑科技 互联网科技公司有哪些 深圳卡尔迅互联网科技有限公司怎么样 互联网科技公司的市场部门 互联网科技与管理 健康食品互联网创新科技园项目 内蒙古九一互联网科技 智帮互联网科技公司最近动向 电子商务与互联网科技的关系 互联网科技实习生岗位 深圳无忧互联网科技 富国互联网金融科技混合基金 山东大美朱楼互联网科技有限公司 长沙渺峰互联网科技有限公司 美国五大互联网科技公司市值多少 互联网科技大佬云集 上海互联网科技园景观 互联网佳科技有限公司 苏州互联网科技贷款公司 中国航天科技大学国际工业互联网 互联网5g黑科技有哪些 杭州壁岐互联网科技有限公司 华中科技大学互联网的牛人 上海乐五互联网科技有限公司 上海万顺科技互联网有限公司招聘 华人运通互联网科技公司 互联网科技创新方面的资料
0