最近,鱼皮遇到点麻烦事儿,需要对 几千个 PDF 文件做统一处理,比如删除所有 PDF 的前几页、或者给所有 PDF 添加封面等。
如果是几个文件的话,倒可以人工一个一个去操作,但是对于几千个文件,肯定要利用软件实现自动化批处理了。
在网上也搜了很多 PDF 批处理的软件,确实有很多可以满足需求,但问题是,全部都要收费!而且,一个特么比一个贵啊!
那作为一名程序员,何不自己动手、丰衣足食,自己开发一个批处理 PDF 文件的工具?
决定了!我不仅要做,还要直播做!
一方面是我的需求比较简单,再加上现在有各种编程类库,想必自己开发的成本也不会很高,起码比手动处理一个个 PDF 好多了。
另一方面是好久没有写小工具了,心里痒痒的,想练练手。
当然,还有最重要的一点,就是带直播间的各位小伙伴感受一下编程的乐趣~
让我们开始吧!
在此之前,我并不了解有哪些处理 PDF 的类库,因此是真正的完全从零开始 调研 + 开发!
整个开发过程大概持续了半个小时,如果排除安装环境、找源文件、直播交流等事情占用的时间,大概 10 分钟就能完成,真的非常简单了。
首先,要选择使用何种编程语言和类库来编写程序。提到小工具和脚本,我第一时间想到的是用 Python
,可能是 Python 做文件处理的广告太多了吧哈哈。有一说一,Python 的语法简单,类库丰富,用它来开发小工具的确非常方便。
那如何处理 PDF 文件呢?网上肯定有别人开发好的工具类库!于是我去 GitHub 上简单搜索了下,有没有同时支持 PDF 修改、合并、页面删除的库,果然搜到了 PyPDF2
,看了下项目介绍,简直完美符合我的需求,而且用法也很简单。
因此,确定了,使用 Python 语言 + PyPDF2 进行开发。
Python 的安装非常简单,直接官网下载对应操作系统的安装包即可。要注意的是,在安装 Python 时,最好勾选上自动环境变量配置,省去了自己操作的麻烦。
安装好 Python 后,可以在控制台输入命令来验证是否安装成功。
因为等会我们的工具程序依赖 PyPDF2 类库,所以还要用 Python 自带的安装工具 pip
来安装下它。
pip install PyPDF2
安装好这些后,开始编写代码。
如果只是要实现两个 PDF 文件合并,一行代码都不用自己写!因为 PyPDF2 类库已经给我们提供了文件合并的 Demo,直接复制粘贴过来就行了。
代码如下,非常通俗易懂:
from PyPDF2 import PdfFileMerger
# 定义一个容器,存储所有页面
merger = PdfFileMerger()
# 读取文件
input1 = open("document1.pdf", "rb")
input2 = open("document2.pdf", "rb")
# 插入 pdf1 的前三页
merger.append(fileobj = input1, pages = (0,3))
# 插入 pdf2 的第一页
merger.merge(fileobj = input2, pages = (0,1))
# 写入一个新的 PDF 文件,输出
output = open("document-output.pdf", "wb")
merger.write(output)
我们可以随便找两个 PDF 文件来测试下,先跑通 Demo 再去做进一步的修改。
上述代码运行成功后,我们可以支持用户自己输入要合并的 PDF 文件名,并且自定义第二个要拼接的 PDF 的起始页数。
比如第一个 PDF 只有一页封面,第二个 PDF 拼接起始页为第二页,二者合并,就实现了替换 PDF 文件封面的效果。
最终代码如下:
from PyPDF2 import PdfFileMerger, PdfFileReader
merger = PdfFileMerger()
# input 函数接受用户输入
inputStr1 = input("请输入封面")
inputStr2 = input("请输入pdf")
startNum = input("请输入pdf起始页")
input1 = open(inputStr1, "rb")
input2 = open(inputStr2, "rb")
# 获取 pdf 对象
pdf = PdfFileReader(input2)
# 拼接 pdf1 的第一页
merger.append(fileobj = input1, pages = (0,1))
# 拼接 pdf2 的第二~尾页
merger.append(fileobj = input2, pages = (int(startNum), pdf.getNumPages()))
# Write to an output PDF document
output = open("document-output.pdf", "wb")
merger.write(output)
上面所有的参数都是可以修改的,大家甚至可以 开发一个界面,支持用户在输入框设置参数,从而让工具变得更易用!
开发的过程中,需要不断调试,这里我们简单验证下结果,观察 PDF 的合并是否符合预期即可!
好了,以上就是 PDF 处理工具的制作过程。对于程序员来说,编程语言是最好的工具,大家平时可以多利用它们来解决问题、提高工作效率,还能提升自己的编程技能,岂不美哉!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。