【Python实用小工具】PDF文件快速拆分
"""
需要先安装:pip/pip3 install PyPDF2==3.0.0
python3版本:3.10.6
PyPDF2版本:PyPDF2-3.0.0
执行命令:python3 pdf_div.py
优化记录:优化最后一个文件未写入磁盘的问题。
"""
import PyPDF2
import os
# 以多少页分割1个文件
PAGES_PER_FILE = 499
# 输入pdf文件路径
FILE_PATH = r'input.pdf' # 源文件所在的绝对路径
pdf_file = open(FILE_PATH, 'rb') # 获取原 PDF 文件
pdf_reader = PyPDF2.PdfReader(pdf_file) # 创建 PDF 对象
source_name = pdf_file.name # 获取源文件名称,包含绝对路径
pdf_writer = PyPDF2.PdfWriter() # 创建一个空白 PDF 对象
# print(f"pdf_reader.pages:{pdf_reader.pages}")
new_name = source_name[:-4] + "-0.pdf"
pdf_new_file = open(new_name, 'wb') # 创建一个新文件
print(f"new_name:{new_name}")
for page_num in range(len(pdf_reader.pages)): # 将每页内容分别写入一个新文件
page_obj = pdf_reader.pages[page_num]
pdf_writer.add_page(page_obj) # 向空白 PDF 对象中添加要复制的 PDF页面
if page_num%PAGES_PER_FILE == 0 and page_num != 0:
pdf_writer.write(pdf_new_file) # 将添加了内容的空白 PDF 对象,写入到新建文件中
pdf_new_file.close()
pdf_writer.__init__() # 将 PDF 对象初始化
new_name = source_name[:-4] + "-" + str(page_num//PAGES_PER_FILE) + ".pdf"
pdf_new_file = open(new_name, 'wb') # 创建一个新文件
print(f"new_name:{new_name}")
pdf_writer.write(pdf_new_file) # 将添加了内容的空白 PDF 对象,写入到新建文件中
pdf_new_file.close()
pdf_writer.__init__() # 将 PDF 对象初始化
pdf_file.close()
参考文献:https://blog.csdn.net/ljr_123/article/details/107695255