python-实战4拆分pdf文件

Wps等软件拆分一份页数较多的PDF文件时,经常会出现要收费或者只能拆分其中几页的情况,下面我们就自己来写代码来实现这个收费功能。

课程中已经初步学习了如何将一个PDF文件拆分成总页数个子PDF文件,我们基于其中的思路进行改进,将拆分代码封装成函数,代码如下:

python 复制代码
import os
from PyPDF2 import PdfWriter, PdfReader


def split_pdf(file_name, file_path, save_dir, step=3):
    """
    拆分PDF为多个小的PDF文件。

    :param file_name: 拆分后的文件名的前缀
    :param file_path: 原始PDF文件路径
    :param save_dir: 保存拆分后PDF文件的目录路径
    :param step: 每step页拆分为一个新的PDF文件,例如step=3表示每隔3页拆分一次
    """
    # 如果保存目录不存在,则创建目录
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)

    # 检查step值是否合法
    if step < 1:
        print("输入的拆分间隔不能小于1")
        return

    # 读取PDF文件
    pdf_reader = PdfReader(file_path)
    page_count = len(pdf_reader.pages)  # 获取总页数

    # 遍历每个页码区间
    for page in range(0, page_count, step):
        pdf_writer = PdfWriter()

        # 添加指定页码的内容到新的PDF中
        for index in range(page, page + step):
            if index < page_count:
                pdf_writer.add_page(pdf_reader.pages[index])#将当前页码 index 对应的页面添加到 pdf_writer 中,即将页面内容写入新的PDF文件。

        # 生成拆分后的文件名
        child_name = f'{file_name}_{int(page / step) + 1}.pdf'
        save_path = os.path.join(save_dir, child_name)
'''
int(page / step):
这是计算当前页码区间所对应的拆分文件的索引。
page / step 计算当前页码区间属于哪个拆分文件,这里使用了浮点除法(即 page 除以 step)。
int(page / step) 将结果转换为整数,舍去小数部分。这样可以得到当前页码区间对应的文件索引(从0开始)。'''
        # 将拆分后的PDF写入文件
        with open(save_path, "wb") as out_file:
            pdf_writer.write(out_file)

        print(f"文件已保存至: {save_path}")

    print(f"所有文件已成功拆分,保存路径为:{save_dir}")


if __name__ == '__main__':
    split_pdf('拆分PDF', 'D:/自动化/第12讲.pdf', 'D:/自动化/拆分2', 3)

Pdf文件在办公文件中占有很大一席之地,熟悉了pdfplumbe库一些常用操作可以让你轻松获取pdf文件中的内容,不用再一次次去选中文件中的文字进行复制,PyPDF2库可以让你自己实现很多付费软件才能实现的功能。

学习二字,多学多习,希望同学们有空时将本节课中学习的代码都抽离成一个个函数,以后用时直接调用,既省时又省力了。

相关推荐
TextIn智能文档云平台1 小时前
复杂PDF文档结构化提取全攻略——从OCR到大模型知识库构建
pdf·ocr
会飞的小菠菜1 小时前
PDF文件中的广告二维码图片该怎么批量删除
pdf·删除·二维码·批量
一只花里胡哨的程序猿16 小时前
odoo打印pdf速度慢问题
pdf·odoo
灵海之森19 小时前
Python将md转html,转pdf
pdf
阿幸软件杂货间1 天前
最新PDF版本!Acrobat Pro DC 2025,解压即用版
pdf·adobe acrobat·acrobat
星空的资源小屋1 天前
网易UU远程,免费电脑远程控制软件
人工智能·python·pdf·电脑
会飞的小菠菜1 天前
如何一次性将多个PPT幻灯片批量转换成PDF文档
pdf·powerpoint·ppt·批量·格式转换
somethingGoWay1 天前
wpf .netcore 导出pdf文件
pdf·wpf·.netcore
小白电脑技术2 天前
PDF教程|如何把想要的网页保存下来?
pdf·电脑
我没想到原来他们都是一堆坏人2 天前
通过Gen AI SDK调用gemini 2.5 pro,单独上传pdf文件 | ai agent 开发笔记 2025.9.2 Day 2
ai·google·pdf·sdk·gemini