在日常工作中,我们经常需要将一本 PDF 文档按章节进行拆分,比如将一本电子书拆分为单独的章节文件。本文将为大家分享一个使用 Python 和 PyPDF2
库实现按章节拆分 PDF 文档的完整代码。
实现原理
PDF 文档中的章节信息通常由 书签(Outline) 标识。通过读取书签信息,我们可以获得每个章节的起始页码,然后根据这些页码将 PDF 文档拆分成多个小文件。
本文使用 PyPDF2
库来完成以下工作:
- 读取 PDF 文档中的书签。
- 根据书签的起止页码,提取对应章节内容。
- 将每个章节保存为独立的 PDF 文件。
环境准备
安装 PyPDF2
在运行代码之前,需要先安装 PyPDF2
库。使用以下命令即可完成安装:
pip install PyPDF2
项目结构
假设我们有一个名为 input.pdf
的 PDF 文件,并希望将拆分后的文件保存到 output/
文件夹中。
project/
├── book-test/
│ ├── input.pdf # 输入文件
│ ├── output/ # 输出文件夹
代码实现
以下是完整的 Python 代码:
import os
from PyPDF2 import PdfReader, PdfWriter
def split_pdf_by_chapters(input_pdf_path, output_folder):
"""
按章节(书签)拆分 PDF 文档。
:param input_pdf_path: 输入的 PDF 文件路径
:param output_folder: 输出的文件夹路径
"""
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 读取 PDF 文档
reader = PdfReader(input_pdf_path)
outlines = reader.outline # 获取书签信息
total_pages = len(reader.pages)
print(f"正在解析书签,共