Python使用PyPDF2库实现PDF文件切割与合并

Mia
Mia
发布时间:2026-10-15 | 4人浏览过
原创

本文介绍如何利用Python的PyPDF2库实现PDF文件的切割与合并功能。通过pip安装库后,使用PdfFileReader和PdfFileWriter类,指定起始与结束页码进行分割,并将多个PDF文件列表合并为一个新文件。该方法无需付费软件,适合程序员自主处理文档。

Python使用PyPDF2库实现PDF文件切割与合并

近期希望借助PDF切分软件完成文件分割,却发现此类工具往往要求会员权限。面对这种简单的功能却需要付费的情况,程序员自然倾向于自主解决。秉持自给自足的理念,决定采用Python语言自行编写代码来切割文件。

经过搜索发现,多数方案推荐Adobe Acrobat软件进行剪裁,这显然不够Pythonic。因此,进一步查找使用Python处理PDF的方法,最终锁定PyPDF2库。本文将演示如何利用该库完成PDF文件的分割操作。

首先,需通过pip命令安装该库:

安装依赖库

pip install PyPDF2

接下来是具体的Python代码实现部分。

核心代码实现

# 导入读写pdf模块
from PyPDF2 import PdfFileReader, PdfFileWriter
'''
注意:
页数从0开始索引
range()是左闭右开区间
'''
 
def split_pdf(file_name, start_page, end_page, output_pdf):
    '''
    :param file_name:待分割的pdf文件名
    :param start_page: 执行分割的开始页数
    :param end_page: 执行分割的结束位页数
    :param output_pdf: 保存切割后的文件名
    '''
    # 读取待分割的pdf文件
    input_file = PdfFileReader(open(file_name, 'rb'))
    # 实例一个 PDF文件编写器
    output_file = PdfFileWriter()
    # 把分割的文件添加在一起
    for i in range(start_page, end_page):
        output_file.addPage(input_file.getPage(i))
    # 将分割的文件输出保存
    with open(output_pdf, 'wb') as f:
        output_file.write(f)
 
def merge_pdf(merge_list, output_pdf):
    """
    merge_list: 需要合并的pdf列表
    output_pdf:合并之后的pdf名
    """
    # 实例一个 PDF文件编写器
    output = PdfFileWriter()
    for ml in merge_list:
        pdf_input = PdfFileReader(open(ml, 'rb'))
        page_count = pdf_input.getNumPages()
        for i in range(page_count):
            output.addPage(pdf_input.getPage(i))
 
    output.write(open(output_pdf, 'wb'))
 
 
if __name__ == '__main__':
    # 分割pdf
    split_pdf("test.pdf", 0, 3, "0-2.pdf")
    split_pdf("test.pdf", 7, 12, "7-11.pdf")
    split_pdf("test.pdf", 18, 23, "18-22.pdf")
    split_pdf("test.pdf", 27, 33, "26-32.pdf")
    split_pdf("test.pdf", 40, 44, "40-43.pdf")
    split_pdf("test.pdf", 46, 51, "46-50.pdf")
    split_pdf("test.pdf", 58, 66, "58-65.pdf")
    split_pdf("test.pdf", 77, 84, "77-83.pdf")
    split_pdf("test.pdf", 93, 97, "93-96.pdf")
    split_pdf("test.pdf", 102, 106, "102-105.pdf")
    # 合并pdf
    # 合并的pdf列表
    pdf_list = ["0-2.pdf", "7-11.pdf", "18-22.pdf", "26-32.pdf", "40-43.pdf", "46-50.pdf", "58-65.pdf", "77-83.pdf", "93-96.pdf", "102-105.pdf"]
    merge_pdf(pdf_list, "all.pdf")

以下是切割完成后的文件效果,结果令人满意。

至此,关于Python使用PyPDF2实现PDF切割与合并的介绍结束。如需了解更多相关内容,可查阅本站过往文章或继续浏览后续内容,感谢支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表