事件的通过是这样的,因为现有的 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 做一个天气查问零碎(文末支付残缺代码)!