事情的经过是这样的,由于现有的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内容提取和写入的操作就完成了,感谢大家的支持,
【往期精彩】
浪漫的turtle,送给程序员自己的圣诞树!
PyQt5 GUI:百度图片下载器(文末附原始码)
python3中的zip()、zip(*)、list()之间的灵活转换!
python print() 函式的格式化字符串输出
PyQt5 GUI && Requests Api 做一个天气查询系统(文末领取完整代码)!
欢迎关注作者公众号【Python 集中营】,专注于后端编程,每天更新技术干货,不定时分享各类资料!
0 评论