-
PyPDF2如何实现按照PDF页码提取后并另存为PDF格式文件?
事情的经过是这样的,由于现有的PDF文件太多了而我真正需要的内容只有十几页。
每次查找不方便,另外需要发给自己的小伙伴也太多别人也不容易找到需要的内容,所以产生了一个想法就是把需要的PDF提取出来然后另存为一个PDF文件。
于是就有了这次的PDF页面提取操作,下面进入实战环节。
项目中用到的库主要是PyPDF2用于PDF格式文件的提取等操作,另外还需要os操作库用来做文件的读写、另存为操作。
【阅读全文】
from PyPDF2 import PdfFileReader, PdfFileWriter # PDF格式文件操作
import os # 系统文件操作
第一步:初始化在PDF文件操作过程中的相关参数。
# 定义文件的操作路径(需要提取内容的原文件路径)
file_path = 'data.pdf'
# 定义目标文件路径(已经提取好的文件路径)
output_file_path = ''
# 定义开始提取页的页码
begin = '102'
# 定义结束提取页的页码
end = '113'
# 初始化已经提取好的文件路径
output_file_path = output_file_path + f'({begin}~{end}).pdf'
第二步:判断需要操作的原始文件是否存在、判断需要提取的页码是否在合理的范围内。
# 判断pdf文件是否存在,存在则继续读取文件
if os.path.isfile(file_path):
global pdf_obj_reader
pdf_obj_reader = PdfFileReader(file_path) # 读取原始文件所有内容
# 判断一下页码是否在合理的范围内。
if begin < 1 or end > pdf_obj_reader.getNumPages():
print('请输入合理的页面范围')
else:
exit(0)
第三步:根据需要提取内容的pdf页码范围提取pdf内容并写入PDF文件写入流。
# 初始化文件写入流。
global pdf_obj_writer
pdf_obj_writer = PdfFileWriter()
# 遍历已经读取的文件流,提取需要的部分并写入文件写入流。
for page_num in range(begin - 1, end): # 由于读取的页面是从0开始,所以开始页码进行减1操作
pdf_obj_writer.addPage(pdf_obj_reader.getPage(page_num)) # 将符合条件的页码对应内容写入文件写入流
# 最后,将提取好的文件流对象写入到新定义好的PDF文件中
with open(output_file_path, 'wb') as output_file_pdf:
pdf_obj_writer.write(output_file_pdf) # 写入到指定文件
到此,整个PDF内容提取和写入的操作就完成了,感谢大家的支持。
出处:https://www.cnblogs.com/lwsbc/p/15721074.html
最新更新
go语言写http踩得坑
【Python】爬虫笔记-从PyMySQL到DBUtils
【Python】爬虫笔记-开源代理池haipproxy使用
Python规范:提高可读性
C语言两结构体之间的成员互换
【爬虫实战项目】Python爬取Top100电影榜单
linux(Ubuntu)安装python
anaconda peompt 、labalimg 数据标注
【Python数据分析案例】python数据分析老番
【爬虫+情感判定+Top10高频词+词云图】“
一次SQL调优 聊一聊 SQLSERVER 数据页
聊一聊 SQLSERVER 的行不能跨页
再聊一下那 SQLSERVER 行不能跨页的事
大数据概述
支线第九篇:
数据库的值获取过来转换成Json数组的方法
支线第八篇:数据类型转换
支线第七篇:又是解决报错
支线第六篇:停下脚步,理清思路
支线第五篇:配置接口
【JS】原始类型是值类型吗?存储在栈上
C# List<T> 转 DataTable
C# List<T> 转 DataTable
C# List<T> 转 DataTable 方法修改版
使用插件式开发称重仪表驱动,RS232串口
实现简单的csv文件上传和bootstrap表格的下
第一百一十七篇: JavaScript 工厂模式和原型
第一百一十六篇: JavaScript理解对象
第一百一十五篇: JS集合引用类型Map
第一百一十四篇: JS数组Array(三)数组常