【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

猜你喜欢

转载自blog.csdn.net/RobotFutures/article/details/128471978
今日推荐