操作PDF文件
Contents
PDF是Portable Document Format的缩写,这类文件通常使用.pdf
作为其扩展名。在日常开发工作中,最容易遇到的就是从PDF中读取文本内容以及用已有的内容生成PDF文档这两个任务。
从PDF中提取文本
在Python中,可以使用名为PyPDF2
的三方库来读取PDF文件,可以使用下面的命令来安装它。
(D:\Python\PycharmProjects\day50100\venv\Scripts下cmd)
|
|
PyPDF2
没有办法从PDF文档中提取图像、图表或其他媒体,但它可以提取文本,并将其返回为Python字符串。
|
|
当然,PyPDF2
并不是什么样的PDF文档都能提取出文字来,这个问题就我所知并没有什么特别好的解决方法,尤其是在提取中文的时候。之前给成都一汽大众做企业内训的时候,就有学员提出了一个从报关信息的PDF文档中提取中文文本内容的需求,但是我尝试了多种方法都失败了。网上也有很多讲解从PDF中提取文字的文章,推荐大家自行阅读《三大神器助力Python提取pdf文档信息》一文进行了解。
要从PDF文件中提取文本也可以使用一个三方的命令行工具,具体的做法如下所示。
|
|
旋转和叠加页面
上面的代码中通过创建PdfFileReader
对象的方式来读取PDF文档,该对象的getPage
方法可以获得PDF文档的指定页并得到一个Page
对象,利用Page
对象的rotateClockwise
和rotateCounterClockwise
方法可以实现页面的顺时针和逆时针方向旋转,代码如下所示。
|
|
Page
对象还有一个名为mergePage
的方法,可以将一个页面和另一个页面进行叠加,对于叠加后的页面,我们还是使用PdfFileWriter
对象的addPage
将其添加到一个新的PDF
文档中,有兴趣的读者可以自行尝试。
加密PDF文件
使用PyPDF2
中的PdfFileWrite
对象可以为PDF文档加密,如果需要给一系列的PDF文档设置统一的访问口令,使用Python程序来处理就会非常的方便。
|
|
提示:按照上面的方法也可以读取多个PDF文件的多个页面并将其合并到一个PDF文件中。
创建PDF文件
创建PDF文档需要三方库reportlab
的支持,该库的使用方法可以参考它的官方文档,安装的方法如下所示。
|
|
下面通过一个例子为大家展示reportlab
的用法。
|
|
说明:上面的代码使用了很多字面常量来指定位置和尺寸,在商业项目开发中应该避免这样的硬代码(hard code),因为这样的代码不仅可读性差,维护起来也是一场噩梦。如果项目中需要动态生成PDF文档且PDF文档的格式是相对固定的,可以将上面的字面常量处理成符号常量。记住:符号常量优于字面常量。Python语言没有内置定义常量的语法,但是可以约定变量名使用全大写字母的变量就是常量。
Author kong
LastMod 2021-07-31