from PyPDF2 import PdfFileReader, PdfFileWriter
import fitz
def split_single_pdf(read_file, start_page, end_page, pdf_file):
"""
根据页码对pdf进行拆分,形成一个新的pdf,并输出
:param read_file: 需要处理的pdf文件绝对路径
:param start_page: 开始页码
:param end_page: 结束页码
:param pdf_file: 生成的新的pdf的绝对路径
:return:
"""
# 获取原始pdf文件
fp_read_file = open(read_file, 'rb')
# 将要分割的PDF内容格式化
pdf_input = PdfFileReader(fp_read_file)
# 实例一个 PDF文件编写器
pdf_output = PdfFileWriter()
# 把start_page到end_page页放到PDF文件编写器
for i in range(start_page-1, end_page):
pdf_output.addPage(pdf_input.getPage(i))
# PDF文件输出
with open(pdf_file, 'wb') as pdf_out:
pdf_output.write(pdf_out)
print(f'{read_file}分割{start_page}页-{end_page}页完成,保存为{pdf_file}!')
#要处理的pdf文件
file_path = r'D:\Users\admin\Desktop\深圳市花梦资本管理有限公司代花梦费诗1号自强私募投资基金.pdf'
# 切分后文件文件名
pdf_file = r'D:\Users\admin\Desktop\test_results.pdf'
# 切分开始页面
start = 1
# 切分结束页面
end = 4
# split_single_pdf(file_path, start, end, pdf_file)
def split_pdf(read_file, keywords, pdf_file):
'''
根据关键字keywords对pdf进行拆分,将所有含有keywords的页形成一个新的pdf,并输出
:param read_file: 需要处理的pdf文件绝对路径
:param keywords: 关键字
:param pdf_file: 生成的新的pdf的绝对路径
:return:
'''
f=open(read_file,'rb')
# 生成pdf文件操作对象
pdf_reader=PdfFileReader(f)
pdf_writer = PdfFileWriter()
# 获取该pdf文件的页数
# page_nums=pdf_reader.numPages
for i in range(pdf_reader.numPages):
pdf_page = pdf_reader.getPage(i)
page_text=pdf_page.extract_text()
print(page_text)
if keywords in page_text:
pdf_writer.addPage(pdf_reader.getPage(i))
# print(i + 1, pdf_page.extract_text())
with open(pdf_file, 'wb') as out:
pdf_writer.write(out)
f.close()
print(f'{read_file}分割含有关键字【{keywords}】页完成,保存为{pdf_file}!')
参考资料:
Python 办公自动化之 PDF 的详细操作(全)
用来自动修改pdf_利用Python处理PDF——裁剪和生成新的PDF
python常用库 自动化办公类 —— PyPDF2(处理pdf文件)