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

 更新时间:2025年11月27日 08:47:39   作者: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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PyInstaller的安装和使用的详细步骤

    PyInstaller的安装和使用的详细步骤

    这篇文章主要介绍了PyInstaller的安装和使用的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python实现动态规划算法的示例代码

    python实现动态规划算法的示例代码

    本文主要介绍了python实现动态规划算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python语言的面相对象编程方式初步学习

    Python语言的面相对象编程方式初步学习

    这篇文章主要介绍Python语言的面相对象编程方式的初步学习,包括类和对象以及继承特性等知识,需要的朋友可以参考下
    2016-03-03
  • Python selenium的基本使用方法分析

    Python selenium的基本使用方法分析

    这篇文章主要介绍了Python selenium的基本使用方法,结合实例形式分析了Python使用selenium模块进行web自动化测试的基本模块导入、操作技巧与相关注意事项,需要的朋友可以参考下
    2019-12-12
  • Python中pywin32 常用窗口操作的实现

    Python中pywin32 常用窗口操作的实现

    本文主要介绍了Python中pywin32 常用窗口操作的实现,pywin32 主要的作用是供 Python开发者快速调用 Windows API的一个模块库,下面就来具体介绍一下,感兴趣的可以了解一下
    2025-04-04
  • Python实现FTP文件定时自动下载的步骤

    Python实现FTP文件定时自动下载的步骤

    这篇文章主要介绍了Python实现FTP文件定时自动下载的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python基础之单分派泛函数singledispatch

    python基础之单分派泛函数singledispatch

    这篇文章主要介绍了python基础之单分派泛函数singledispatch问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python MySQL 日期时间格式化作为参数的操作

    Python MySQL 日期时间格式化作为参数的操作

    这篇文章主要介绍了Python MySQL 日期时间格式化作为参数的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python3使用requests模块实现显示下载进度的方法详解

    Python3使用requests模块实现显示下载进度的方法详解

    这篇文章主要介绍了Python3使用requests模块实现显示下载进度的方法,结合实例形式分析了Python3中requests模块的配置、使用及显示进度条类的相关定义方法,需要的朋友可以参考下
    2019-02-02
  • Python实现自动化处理PDF文件的方法详解

    Python实现自动化处理PDF文件的方法详解

    这篇文章主要为大家详细介绍了如何使用Python完成简单的PDF文件处理操作,如PDF文件的批量合并、拆分、加密以及添加水印等,需要的可以参考一下
    2022-09-09

最新评论