源码1.批量合并PDF文档:Python脚本详解

批量合并PDF文档

在本篇技术博客中,我们将探讨如何利用Python的PyPDF2库来批量合并PDF文档。这是一个非常实用的功能,特别适用于需要将多个PDF报告或文件整合成一个PDF的场合。我们还会讨论如何通过命令行打包Python脚本为独立的可执行文件,以便在没有Python环境的计算机上运行。

导入用到的包

在开始编写代码之前,我们需要确保导入了所有必须的库。在这个例子中,我们只需要两个库:osPyPDF2

  • os库将帮助我们处理文件和目录,例如更改当前工作目录或列出目录内容。
  • PyPDF2库提供了操作PDF文件的功能,包括合并PDF文档。
import os
from time import sleep
from PyPDF2 import PdfMerger, PdfReader

在这段代码中,我们还导入了sleep函数,它将在程序的最后用来暂停程序,以便用户能看到程序的输出结果。

打包命令

在代码的注释中,我们提供了一个打包命令,这个命令使用Nuitka工具将Python脚本转换为独立的可执行文件。这样,用户不需要安装Python或任何依赖库就能运行我们的脚本。这个命令排除了不需要打包的库,并设置了程序图标和输出目录。

nuitka --standalone  --mingw64 --show-progress --show-memory --nofollow-import-to=PyPDF2,PIL,tkinter,http,email --windows-icon-from-ico=3.带有界面的PDF合并工具使用PyPDF2和Tkinter.ico  --output-dir=o 1.批量合并PDF.py

代码详细解释

让我们逐步解释代码的每一部分。

用户交互

首先,我们打印一条消息,并要求用户输入包含PDF文件的目录路径。

file_path = input("请输入需要合并的PDF所在路径:")

更改工作目录

我们尝试更改到用户指定的目录。如果指定的目录不存在,我们会捕获一个OSError异常,并告知用户。

try:
    os.chdir(file_path)
except OSError as e:
    print(e)
    print("文件夹不存在,请检查路径是否正确,程序5s后异常退出")
    sleep(5)
    exit()

读取和排序PDF文件

接下来,我们读取指定目录下的所有文件,并通过修改时间对它们进行排序,以确保合并的PDF文档是按照文件的修改顺序来的。

pdfs = os.listdir('.')
sorted_file_list = sorted(pdfs, key=lambda x: os.path.getmtime(os.path.join('.', x)))

合并PDF文件

我们创建一个PdfMerger对象,并遍历排序后的PDF文件列表,将每个PDF文件添加到PdfMerger对象中。

pdf_all = PdfMerger()
for pdf in sorted_file_list:
    with open(pdf, "rb") as temp:
        pdfreader = PdfReader(temp)
        pdf_all.append(pdfreader, import_outline=True)

保存合并后的PDF

最后,我们定义一个文件名,将合并后的PDF保存到这个文件,并关闭文件。

pdf_save = open(r".\pdfall.pdf", "wb")
pdf_all.write(pdf_save)
pdf_save.close()

程序结束提示

在程序的最后,我们打印出合并完成的消息,并让程序暂停5秒钟,然后自动关闭。

print("合并完成,程序5秒后自动关闭")
sleep(5)

这样,我们就完成了一个简单的批量合并PDF文档的脚本。用户可以通过命令行运行这个脚本,也可以通过Nuitka打包成可执行文件,方便在任何没有Python环境的计算机上使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

念广隶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值