大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。
PDF文件是一种非常常用的文件格式,它的优势在于文件的内容是完全固定的。我们熟悉的docx文件,有可能在这个版本的word上是一个样子,在另一个版本的word上又是另一个样子。而PDF文件则不然,一旦生成,无论在任何地方打开都是同一个样子,一样的字体,一样的排版……这是PDF的优点,但也带来了一些麻烦,没错,就是PDF文件很难编辑。所以很多时候如果我们想去编辑PDF文件,就不得不借助一些软件甚至是收费软件来实现。
但是,我们现在有了Python,还要用那种不划算的方法来实现我们的目的吗?不!其实我们使用一些模块就可以实现,完全免费!今天我们先来了解一个对PDF进行整体编辑的模块——PyPDF2。
PyPDF2主要用来以页为单位对PDF文件进行拆分、合并以及旋转页面,这些操作也是在办公中需求比较高的操作——用扫描仪自动扫描生成的文档往往需要加以调整。使用PyPDF2进行处理,非常的快速便捷。
PyPDF2的安装名和导入名都是一样的。我们主要使用PyPDF2的读取器PdfReader和写入器PdfWriter:
PyPDF2的基本逻辑是这样的:使用读取器PdfReader读取PDF文档,使用getPage方法获取指定的页,再将页使用addPage方法添加至写入器PdfWriter,最后使用write方法将写入器中的内容存入一个新文档。
假设我们现在扫描了一个页数很多的文件,但发现扫描的设置错误了,把本该单面扫描的文件设成了双面扫描,每个偶数页都是空白的。但是我们又不想重新扫描一遍,该怎么操作呢?我们可以编写这样的代码:
在这里我们对读取器使用numPages方法获取了PDF文档的页数,再使用步长为2的range选取了所有基数页的页码,在for循环中使用getPage方法获取到了奇数页并使用addPage方法将其添加到写入器中。最后使用with open语句新建一个文件,并将写入器中的内容使用write方法写入到新的文件中。
其他的处理方法我们可以举一反三,比如选取某几页或者剔除某几页并存入新的文档中,这些就由大家自己来编写了。
在使用getPage方法获取到某个单一的页面之后,我们可以对其使用rotate方法对其进行旋转。rotate方法只接受±0,±90,±180,±270这些角度,正数为顺时针,负数为逆时针。如果我们扫描的文档中有某页应该是横向的,我们就可以将其旋转:
除了单页操作之外,PyPDF2还提供了整体合并的方法——PdfMerger。它可以让我们直接对多个PDF文档进行合并:
使用PdfMerger的方便之处在于合并操作的读取和写入过程都只依赖于PdfMerger这一个类。而且PdfMerger在文件整体合并以外还可以支持局部页的插入:
这里主要使用了PdfMerger的merge方法。merge方法有三个参数,其中position是插入页面的位置(依然是从零开始),position=1意味着插入到第二页。需要注意的是这个position是相对于当前位置来计算的,在有别的页面插入之后相对的位置会发生变化,要计算好。fileobj则是PDF文档对象,而pages则是插入的页面范围,比如pages=(0,2)意味着将这个PDF文档的前两页插入。
这一期我们初步认识了PyPDF2这个操作PDF的神器模块,所涉及到的这些操作覆盖了大部分我们办公室常常会有需要的功能,此外PyPDF2模块还提供了一些其他的小功能,我们在后边的学习中还会介绍到。如果这篇文章对你有所帮助,希望能帮室长点个赞和在看,你的鼓励是室长进步的动力!
领取专属 10元无门槛券
私享最新 技术干货