Python实现批量合并PDF文件

本文介绍了作者使用Python和PyMuPDF库编写的批量合并PDF文件的脚本,包括文件搜索、合并过程和存在的不足,以及推荐阅读PyMuPDF官方文档以提高代码质量。
摘要由CSDN通过智能技术生成

一、个人需求

今天,又需要合并PDF文件,就又编写了一个Python代码。

二、环境需求

一台电脑

Python环境

下载需要的库函数

pip install pymupdf

三、编写代码

"""
Author: LeopardRich 2829176648@qq.com
Date: 2023-11-30 21:47:35
Description: Function functionality@批量合并PDF文件
Copyright (c) 2024 by LeopardRich 2829176648@qq.com, All Rights Reserved.
"""

import os

import fitz


def search_all_fit_files(folder: str) -> list:
    """寻找文件夹下符合条件的文件

    :param folder: 文件夹路径
    :return: 符合条件的文件绝对路径的列表
    """
    PDFs = []
    for file in os.listdir(folder):
        if os.path.isfile(os.path.join(folder, file)) and \
                (file.endswith('.pdf') or file.endswith('.PDF')) and not file.startswith("~$"):
            PDFs.append(os.path.abspath(os.path.join(folder_path, file)))
    return PDFs


def merge_pdf_files(folder: str, output=None) -> None:
    """批量合并PDF文件

    :param folder: {str} 文件夹路径
    :param output: {str} 输出文件的绝对路径
    :return: None
    """

    # 处理output默认值
    if output is None or not output.endswith("pdf") or not output.endswith("PDF"):
        output = os.path.join(folder, "默认.pdf")

    # 获取所有PDF文件
    PDFs = search_all_fit_files(folder)

    # 防止合并的文件只有一个
    assert len(PDFs) > 2

    print(f"将要合并的文件{PDFs}")

    # 定义文件头
    header = fitz.open(PDFs.pop(0))

    # 添加文件
    for file_path in PDFs:
        next_PDF = fitz.open(file_path)
        header.insert_pdf(next_PDF)

    # 保存文件
    header.save(output)

    print(f"合并后的文件保存在{output}")


if __name__ == "__main__":
    # 替换成你的文件夹路径
    folder_path = r'D:\Desktop'

    # 替换成你想要的输出文件路径
    output_file = r'D:\Desktop\merged.pdf'
    merge_pdf_files(folder_path, output_file)

四、代码不足

本次代码存在以下已知问题:

  1. 合并的顺序按照程序读取顺序,不可控,后续可以添加修改PDFs的函数。
  2. 代码可能存在异常处理不完全的情况。

五、个人收获

编写代码的时候,为了略微扩展,应该阅读官方文档。

本次推荐阅读:

PyMuPDF官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值