搜索
首页后端开发Python教程Python中如何用PyPDF2模块拆分PDF文档

安装PyPDF2模块

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

pip3 install PyPDF2

Python中如何用PyPDF2模块拆分PDF文档

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

创建文件,准备PDF文档

Python中如何用PyPDF2模块拆分PDF文档

找一个练手的比较大的PDF文档,我在Django官网下载了他的文档,这个文档足够大,1900多页,对于练手绝对够了,有需要的去官网下载,或者在我的公众号直接回复‘pdf’ 获取下载链接,然后再创建一个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),得到每一页的数据,之后再指定拆分页数范围进行拆分:

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

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

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

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

我们发现规律,每次遍历第一个数字的规律是 一个文档的页数,乘以自己属于第几个便可以得到。第二个数我们发现没规律了,其实仔细观察也有规律,假如我们对拆分个数排序,这个例子就是1--4,第二个数字就是当前属于第几个拆分数乘以每个文档组成的页数(页数是固定的10)。

可是我们第一次遍历的时候从0开始,就让num变得不通用,那么我们改造一下从1开始遍历,range(1,35),从一开始遍历,基于range不包含本身最后一个的特性,这样遍历出来就少了一页文档,那么我们给他加1,变成

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

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

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

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

  5. 第四个文档从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

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

拆分列表方法实现拆分PDF:

#! python

怎么用?

Python中如何用PyPDF2模块拆分PDF文档

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

Python中如何用PyPDF2模块拆分PDF文档

以上是Python中如何用PyPDF2模块拆分PDF文档的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:亿速云。如有侵权,请联系admin@php.cn删除
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。