导读:本期聚焦于小伙伴创作的《如何用PyMuPDF批量给多个文件夹里的PDF文件添加指定页面》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何用PyMuPDF批量给多个文件夹里的PDF文件添加指定页面》有用,将其分享出去将是对创作者最好的鼓励。

在实际文档处理场景中,经常需要给多个文件夹下的PDF文件统一添加指定页面,比如给所有合同PDF添加封面页、给所有报告PDF添加附录页。借助PyMuPDF库可以快速实现这个需求,无需手动逐个操作。

如何用PyMuPDF批量给多个文件夹里的PDF文件添加指定页面

环境准备

首先需要安装PyMuPDF库,它是基于MuPDF引擎的Python绑定,处理PDF速度快且功能全面。可以通过pip命令安装:

pip install pymupdf

核心实现思路

整个批量处理流程可以分为三个核心步骤:

  • 遍历所有目标文件夹,收集需要处理的PDF文件路径
  • 读取待添加的指定页面文件,提取页面内容
  • 逐个打开目标PDF,在指定位置插入页面并保存

完整实现代码

1. 多文件夹遍历函数

首先实现遍历多个根文件夹,收集所有PDF文件路径的功能:

import os

def get_all_pdf_paths(root_folders):
    """遍历多个根文件夹,返回所有PDF文件的绝对路径列表"""
    pdf_paths = []
    for root_folder in root_folders:
        # 检查根文件夹是否存在
        if not os.path.exists(root_folder):
            print(f"警告:文件夹 {root_folder} 不存在,已跳过")
            continue
        # 递归遍历文件夹下的所有文件
        for parent, dirnames, filenames in os.walk(root_folder):
            for filename in filenames:
                # 筛选PDF文件,忽略大小写
                if filename.lower().endswith(".pdf"):
                    pdf_path = os.path.join(parent, filename)
                    pdf_paths.append(pdf_path)
    return pdf_paths

2. 批量添加指定页面函数

接下来实现核心的页面添加逻辑,支持指定插入位置:

import fitz  # PyMuPDF的导入名是fitz

def batch_add_page_to_pdfs(pdf_paths, insert_page_path, insert_index=0):
    """
    批量给PDF文件添加指定页面
    :param pdf_paths: 待处理的PDF文件路径列表
    :param insert_page_path: 待插入的页面所在的PDF路径
    :param insert_index: 插入位置,0表示插入到第一页,默认为0
    """
    # 打开待插入的页面文件,提取第一页作为插入内容
    insert_doc = fitz.open(insert_page_path)
    insert_page = insert_doc[0]  # 取第一页作为待插入页面
    # 遍历所有待处理的PDF文件
    for pdf_path in pdf_paths:
        try:
            # 打开目标PDF文件
            target_doc = fitz.open(pdf_path)
            # 在指定位置插入页面,insert_index不能超过文档总页数
            actual_index = min(insert_index, len(target_doc))
            target_doc.insert_pdf(insert_doc, from_page=0, to_page=0, start_at=actual_index)
            # 保存文件,覆盖原文件,也可以修改为保存为新文件
            target_doc.save(pdf_path)
            target_doc.close()
            print(f"处理成功:{pdf_path}")
        except Exception as e:
            print(f"处理失败 {pdf_path},错误原因:{str(e)}")
    # 关闭插入页面文档
    insert_doc.close()

3. 主函数调用示例

最后编写主函数,配置参数并启动处理流程:

if __name__ == "__main__":
    # 配置需要遍历的多个根文件夹路径
    root_folders = [
        r"D:文档文件夹1",
        r"D:文档文件夹2",
        r"D:文档文件夹3"
    ]
    # 配置待插入的指定页面PDF路径,该PDF的第一页会被插入到目标PDF中
    insert_page_path = r"D:文档待插入页面.pdf"
    # 配置插入位置,0表示插入到第一页,1表示插入到第二页,以此类推
    insert_index = 0
    
    # 获取所有PDF文件路径
    all_pdf_paths = get_all_pdf_paths(root_folders)
    print(f"共找到 {len(all_pdf_paths)} 个PDF文件待处理")
    
    # 执行批量添加页面操作
    if all_pdf_paths:
        batch_add_page_to_pdfs(all_pdf_paths, insert_page_path, insert_index)
        print("批量处理完成")
    else:
        print("未找到需要处理的PDF文件")

注意事项

  • 插入位置参数insert_index如果大于目标PDF的总页数,会自动插入到文档末尾
  • 默认逻辑是覆盖原文件,如果需要保留原文件,可以修改保存路径,比如在原文件名后加_new后缀
  • 待插入的页面PDF如果有多页,可以修改insert_pdf方法的from_pageto_page参数,插入多页内容
  • 处理前建议先备份原文件,避免处理失败导致文件损坏

常见问题排查

如果遇到PDF文件无法打开的情况,可能是文件被占用或者加密,需要先关闭占用程序,或者先解密PDF文件再处理。如果插入页面后格式错乱,可以检查待插入页面PDF的页面尺寸是否和目标PDF一致,不一致时PyMuPDF会自动适配,但可能出现排版偏移。

PyMuPDFpdf处理批量操作多文件夹遍历修改时间:2026-07-18 04:06:24

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。