如何使用Python玩转PDF各种骚操作?你看了就知道。
Python实现pdf文件分页
- 1.源文件
- 2.目标页数区间
- 3.代码运行
- 4.异常捕获的代码展示
- 5.其它
不知道大家有没有遇到过这么一种情况,就比如一个pdf格式的电子书,我们经常浏览的是其中的一部分,而这电子书的页数很大,每当需要浏览时,就需要翻到对应的页码,就有点儿繁琐。
还有一些情况,比如,我们想分享pdf文件里的部分内容给别人,我们也需要用到pdf分页,不仅可以分析指定内容,而且也可以减少发送文件的大小O(∩_∩)O哈哈~
总之,pdf的分页,我们在现实生活中,是难免会遇到的事。当你遇到时,你是怎么解决的呢?
在Python中,实现pdf分页,是极其简单快速的,只需要运行几行代码,即可实现,不管你的pdf文件有多大,下面让我们一起来看看吧~
注:每部分代码的作用,我都注释在了代码后面,注意查看喔~
from PyPDF2 import PdfFileReader, PdfFileWriter
import osdef split(path, page_num):try: # 捕获值异常错误,就是只输入了一个页数的时候page_start, page_end = page_num.split()except ValueError:page_start = page_numpage_end = page_numoutput_name = os.path.splitext(path)[0] + f'({page_start}-{page_end}).pdf' # 输出分割后的pdf文件page_start, page_end = int(page_start), int(page_end) # 将页码转为整数类型if os.path.splitext(path)[1] == '': # 判断文件格式是否以.pdf结尾path = path + ".pdf"try:pdf = PdfFileReader(path) # 读取pdfexcept FileNotFoundError:print("Error:请确认您输入的pdf文件是否存在!")returnpdf_writer = PdfFileWriter() # pdf写入对象if page_start < 1 or page_end > pdf.getNumPages(): # 判断页码是否在合理范围内,即有没有小于或大于pdf文件的页数print("Error:页码超出合理范围,请确定您输入的页数区间在合理范围之内!")returnfor page in range(page_start-1, page_end): # 需要分割的pdf页数区间,因为读取的页数是从0开始计数的,所以减1pdf_writer.addPage(pdf.getPage(page)) # pdf页数读取,存于内存,并未开始写入with open(output_name, 'wb') as output_pdf:pdf_writer.write(output_pdf) # 开始写入指定页数区间的pdfprint("分页完成,注意查收:" + output_name)if __name__ == '__main__':source_path = input("请输入需要分割的pdf的文件:") # 需要分割的pdf文件pages = input("请输入分割的起始页和终止页,以空格分开:")split(source_path, pages)
其实最主要的代码就下面的几行:
pdf = PdfFileReader(path) # 读取pdf
pdf_writer = PdfFileWriter() # pdf写入对象
for page in range(page_start, page_end): # 需要分割的pdf页数区间pdf_writer.addPage(pdf.getPage(page)) # pdf页数读取,存于内存,并未开始写入
with open(output_name, 'wb') as output_pdf:pdf_writer.write(output_pdf) # 开始写入指定页数区间的pdf
我只是在其基础上增加了一些异常错误捕获并解决的代码,并实现代码的循环利用,而不是只针对于一个pdf文件。
代码使用展示:
1.源文件
书的页数还是挺大的
2.目标页数区间
注意,虽然这里的页码是271,但并不代表就是271,因为读取的pdf文件页码是整个文件的页码,就比如书的封面,目录的页数也得包含进去。
所以,我们可以简单算一下,书的页码第一页与到封面差了几页,我这里差的是13页,所以就是271+13=284作为分割起始页,需要截取的页数对应书上的页码是276,276+13=289,所以终止页就是289了
3.代码运行
4.异常捕获的代码展示
输入的起始页小于1:
pdf页码一共才600页,然后输入了终止页为700:
5.其它
要求的是区间,但你可以输入1 1,1:
箴言:因为这些东西是非常简单的。不要抱怨自己学不会,那是因为你没有足够用心。
最后,感谢您的阅读。您的每个点赞、留言、分享都是对我们最大的鼓励,笔芯~
如有疑问,欢迎在评论区一起讨论!
如何使用Python玩转PDF各种骚操作?你看了就知道。相关推荐
- python怎么玩pdf_如何使用Python玩转PDF各种骚操作?
Portable Document Format(可移植文档格式),或者PDF是一种文件格式,可以用于跨操作系统的呈现和文档交换.尽管PDF最初是由Adobe发明的,但它现在是由国际标准化组织(ISO ...
- 如何使用Python玩转PDF各种骚操作?
点击"小詹学Python",选择"置顶"公众号 重磅干货,第一时间送达 本文转载自Python数据科学,禁二次转载 Portable Document Form ...
- python书籍pdf文档密码-Python玩转PDF的各种骚操作
Portable Document Format(可移植文档格式),或者PDF是一种文件格式,可以用于跨操作系统的呈现和文档交换.尽管PDF最初是由Adobe发明的,但它现在是由国际标准化组织(ISO ...
- python实用大全pdf_超级实用干货|九大技巧,带你用Python玩转PDF
原标题:超级实用干货|九大技巧,带你用Python玩转PDF 尽管PDF最开始是由Adobe发明的,但它现在已经成为国际标准组织ISO维护的公开标准了.大家可以在Python中通过PyPDF2包来处理 ...
- 用python玩转微信小游戏 大小猜猜看
用python玩转微信小游戏 大小猜猜看 游戏模式 在微信小程序里搜索"大小猜猜看",即可找到该游戏. 游戏的目标比拼计算能力,找出谁大谁小,一共有40题,全部答对即挑战成功. 一 ...
- python pypdf2另存为图片_用Python玩转PDF的各种骚操作
文/Python数据科学 图片来源于网络 Portable Document Format(可移植文档格式),或者PDF是一种文件格式,可以用于跨操作系统的呈现和文档交换.尽管PDF最初是由Adob ...
- 用Python玩转PDF的各种骚操作
文/Python数据科学 图片来源于网络 Portable Document Format(可移植文档格式),或者PDF是一种文件格式,可以用于跨操作系统的呈现和文档交换.尽管PDF最初是由Adob ...
- 【Python基础】pandas的骚操作:一行 pandas 代码搞定 Excel “条件格式”!
来源:Python数据科学 作者:东哥起飞 本篇是pandas100个骚操作系列的第 7 篇:一行 pandas 代码搞定 Excel "条件格式"! 系列内容,请看????「pa ...
- 在 Chrome 控制台可以玩的两个骚操作,你知道吗?
在日常的前端开发中,我会经常使用 Chrome 开发者工具调节样式.查看日志.追踪错误.这给我的开发工作带来了很大的便利. 在 Chrome 控制台中,就有两个非常方便且鲜为人知的骚操作,可以供我们使 ...
- 【Python】用 Python 来实现PDF 的各种操作(附网站和操作指导)
导言 PDF 处理是日常工作中的常见需求,包括 PDF 合并.删除.提取等.更复杂的任务如:将 PDF 转换成 图像. 下面通过几个简单的例子和一份代码,帮助大家解决上面的需求,操作非常简单. 在文末 ...
最新文章
- button 去掉原生边框
- 计算机电缆称赞千 捷网络下拉刷词,电脑常用技巧
- Centos 7 64位 minimal 最小化安装的系统中静默安装oracle 11g r2(无图形化安装)
- 时间更新服务器推荐 - NTP时间同步服务器集群:ntp.api.bz
- 真格量化-持仓量第n档卖方主力跟随策略
- 字符变量赋值规则_Java的常量、变量、数据类型(基础篇二)
- IBM 、M$ 、Google Apple
- 普通html优化处理,iOS 数据优化之处理HTML字符串
- 从 JavaScript 到 TypeScript 6 - Vue 引入 TypeScript
- cmd命令行怎样运行python,在CMD命令行中运行python脚本的方法
- NDB Cluster基本操作
- 远程监控系统中关于TP-Link路由器的设置方法
- 细品这杯香浓的咖啡——阿里中间件高级专家沈询的Java之旅
- 计算机电池维修方案,解决方案:计算机主板电池已耗尽,如果不更换电池该怎么办?如何更换电池...
- word制作员工手册教学
- 0基础如何学习安卓开发
- Ardunio下的STM32串口通信
- 教你看别人的QQ密码
- 基于JavaUI的打字游戏
- What is Index?索引是什么?