今天和大家分享一个平时大家都可能会遇到的如下这些场景:
拷贝PDF中文本信息
给PDF文档加个水印
只需要PDF中某几页(可能是交叉页面)
手头有一大堆PDF文档,需要给每个文档都加个密码
上面几个场景,看起来简单,但是当真需要处理的时候,发现手头如果没有一个比较好的PDF的编辑器,很难完成任务。同时当对于一大堆文档的时候,即使有个好的PDF编辑器,也要做重复且大量的工作,才能完成任务
今天就和大家分享一个好东西,那就是Python这个强大的脚本语言,当处理如上问题,那叫一个简单。废话就不多说,我们赶快进入正题,在进入正题前,我们先了解几个基本概念,这样方便不太清楚的小伙伴也能先有个正题理解
前奏
什么是PDF文档
老规矩,维基百科给PDF定义如下:
可移植文档格式(Portable Document Format,简称PDF)是一种用独立于应用程序、硬件、操作系统的方式呈现文档的文件格式。每个PDF文件包含固定布局的平面文档的完整描述,包括文本、字形、图形及其他需要显示的信息。
PDF文档以.pdf作为文件扩展名,由于PDF是可移植的文档格式,跨平台、格式固定,这样我发个文档给你,你打开时就不会因为当前系统安装的软件版本不一样打不开、格式布局发生变法,导致你看到的不是我想给你看到的样式。基于这样那样的问题,目前使用场景很多
准备环境
既然我们要用Python操作PDF,那边我们首先得有Python环境和处理PDF的Python模块。
安装Python3
首先我们需要在本机准备一个Python的环境,目前有很多中安装Python的方法和软件。此处我强烈推荐大家安装Anaconda,这是一个学习Python的利器
Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候。为了解决这些问题,有不少发行版的Python,比如WinPython、Anaconda、pycharm等,这些发行版将Python和许多常用的package打包,方便pythoners直接使用
这些坑我也都踩过,当时心血来潮要学学数据分析,发现清一色的使用Anaconda,小白嘛,所以也就从众一回,自从用上了Anaconda,我觉觉得应该这就是我想要的
Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。对于Anaconda的优点别人的经典总结:*省时省心、分析利器 *
省时省心: Anaconda通过管理工具包、开发环境、Python版本,大大简化了你的工作流程。不仅可以方便地安装、更新、卸载工具包,而且安装时能自动安装相应的依赖包,同时还能使用不同的虚拟环境隔离不同要求的项目
分析利器: 在 Anaconda 官网中是这么宣传自己的:适用于企业级大数据分析的Python工具。其包含了720多个数据科学相关的开源包,在数据可视化、机器学习、深度学习等多方面都有涉及。不仅可以做数据分析,甚至可以用在大数据和人工智能领域
既然说了这么多,关键的是下面如何安装:
Anaconda的下载页参见官网,Linux、Mac、Windows均支持 ,建议安装基于Python3的版本,目前基本上都是使用Python3了(如果使用Python2可能本文示例存在一些不兼容)
建议大家先huag花个时间去学习下Anaconda,目前网上很多教程,有两个地方可以按照自己需求选择学习
Jupyter Notebook
Spyder
阅读本文可以先略过这些操作,如果自己要亲自实践一定要先好好学习下它。
安装PyPDF2模块
完成了Anaconda的安装后,下一步我们就要安装模块PyPDF2了,要安装它,首先打开其命令行
在命令行输入如下命令:
`
注意:这个模块名称是区分大小写的,所以要确保 y 是小写,其他字母都是大写PyPDF2,安装完成后在项目中导入import PyPDF2即可
完成了安装后,打开IDE(上上图中的Spyder)
提醒
本文主要使用PyPDF2库进行pdf文档操作,通过使用发现该库有些缺点,如果无法满足你的需求,下面的内容仅供参考
缺点
提取文本时,对中文支持不好
PyPDF2 不能将任意文本写入 PDF,PyPDF2 写入能力,仅限于从其他 PDF 中拷贝页面、旋转页面、重叠页面和加密文件
模块不允许直接编辑 PDF。必须创建一个新的 PDF,然后从已有的文档拷贝内容
PDF文档操作
下面进入今天的正题,开始前,首先应该去看看PyPDF2的官方文档,主要内容如下图:
首先列出主函数和相应全局变量
PDF文档内容提取
提取页面内容相对较简单,通过PdfFileReader对象获取指定页面对象PageObject,通过其方法extractText()即可返回文本内容,目前发送中文不太友好,同时也没有找到相对应的解决方案
结果如下:
PDF添加水印
对于给PDF文档添加水印其主要步骤有如下几步:
将水印放入pdf文件‘watermark.pdf’中,通过PdfFileReader加载
加载需要添加水印的pdf文件'The Zen of Python.pdf'
通过PdfFileWriter创建输出文件
遍历页面依次通过mergePage合并页面,再通过addPage将页面进行保存
结果形如:
!
PDF加解密
PDF的加解密主要就是三个方法的使用
encrypt 加密
isEncrypted 判断文件是否加密
decrypt 解密文档
PDF页面拆分与合并
页面拆分和合并主要还是通过对页面的遍历,再对页面对象的一些操作。
结果形如:
该文中涉及的到的代码和文档上传至github中stepbysteplearnpython(https://github.com/wqliceman/step_by_step_learn_python)
欢迎关注交流共同进步
领取专属 10元无门槛券
私享最新 技术干货