python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python自定义拆分PDF

Python使用pypdf实现按自定义页码拆分PDF文件

作者:weixin_46244623

在处理 PDF 文件时,我们经常需要按章节或页码范围拆分 PDF,本文将分享一个简单实用的 Python 方法,感兴趣的小伙伴可以跟随小编一起学习一下

在处理 PDF 文件时,我们经常需要按章节或页码范围拆分 PDF。本文将分享一个简单实用的 Python 方法,使用 pypdf 库按自定义页码拆分 PDF,并保存为单独文件。

一、环境准备

首先,确保安装了 pypdf 库:

pip install pypdf

二、实现功能

下面的 Python 脚本可以将 PDF 按指定的页码范围拆分为多个文件,并保存到指定文件夹。

from pypdf import PdfReader, PdfWriter
import os

def split_pdf_by_page_ranges(input_pdf, output_folder, ranges):
    reader = PdfReader(input_pdf)

    # 如果输出目录不存在,则创建
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍历页码范围
    for idx, (start_page, end_page) in enumerate(ranges, 1):
        writer = PdfWriter()

        # 页码从 0 开始,用户输入通常是从 1 开始
        for page_num in range(start_page - 1, end_page):
            if page_num < len(reader.pages):
                writer.add_page(reader.pages[page_num])
            else:
                print(f"Warning: page {page_num + 1} out of range.")

        # 输出文件名
        output_filename = f"{output_folder}/chapter_{idx}_pages_{start_page}-{end_page}.pdf"
        with open(output_filename, "wb") as output_file:
            writer.write(output_file)

        print(f"Saved {output_filename}")

# ✏️ 自定义你的分章节页码(格式:[(开始页, 结束页), ...])
page_ranges = [
    (1, 34),   # 序
    (35, 50),  # 第一章
    (51, 73),  # 第二章
    (74, 93),  # 第三章
    (94, 118), # 第四章
    (119, 152),# 第五章
    (153, 166),# 第六章
    (167, 183),# 第七章
    (184, 206),# 第八章
    (207, 230),# 第九章
    (231, 251) # 第十章
]

# 调用函数拆分 PDF
split_pdf_by_page_ranges("input.pdf", "./output_manual_split", page_ranges)

三、功能解析

1.读取 PDF 文件

reader = PdfReader(input_pdf)

PdfReader 用于读取 PDF 文件内容。

2.创建输出目录

if not os.path.exists(output_folder):
    os.makedirs(output_folder)

避免输出目录不存在导致报错。

3.按页码拆分

for page_num in range(start_page - 1, end_page):
    writer.add_page(reader.pages[page_num])

页码从 0 开始,所以用户输入从 1 开始,需要减 1。

4.保存拆分后的文件

with open(output_filename, "wb") as output_file:
    writer.write(output_file)

每个章节生成独立 PDF 文件,并按章节序号命名。

四、运行效果

假设原 PDF 文件名为 input.pdf,执行脚本后,会在 ./output_manual_split 目录下生成:

chapter_1_pages_1-34.pdf
chapter_2_pages_35-50.pdf
chapter_3_pages_51-73.pdf
...
chapter_11_pages_231-251.pdf

每个文件对应你自定义的页码范围。

五、总结

通过 pypdf,我们可以非常方便地按自定义页码拆分 PDF 文件,无需复杂操作,适合电子书分章节、资料拆分等场景。

到此这篇关于Python使用pypdf实现按自定义页码拆分PDF文件的文章就介绍到这了,更多相关Python自定义拆分PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文