实用办公技巧贴——当Python遇上PDF

PortableDocumentFormat(可移植文档格式) , 即PDF是一种文件格式 , 可以用于跨操作系统的呈现和文档交换 。 尽管PDF最初是由Adobe发明的 , 但它现在是由国际标准化组织(ISO)维护的开放标准 。 完全可以通过使用PyPDF2包在Python中处理已先存在的PDF哦!
实用办公技巧贴——当Python遇上PDF
文章图片
PyPDF2是一个纯Python包 , 可用于许多不同类型的PDF操作 。
从Python中提取PDF文档信息
可以使用PyPDF2从PDF中提取元数据和一些文本 , 尤其是当在预先存在的PDF文件上执行某些类型的自动化时是非常有用的 。
以下是当前可以提取的数据类型:
Author
Creator
Producer
Subject
Title
Numberofpage
基本操作
PyPDF2导入模块的代码常常是:
实用办公技巧贴——当Python遇上PDF
文章图片
这里导入了两个方法:
PdfFileReader可以理解为读取器
PdfFileWriter可以理解为写入器
接下来通过几个案例进一步认识这两个工具的奇妙之处 , 用到的示例文件是5个发票的pdf
实用办公技巧贴——当Python遇上PDF
文章图片
每个发票的PDF都由两页组成:
实用办公技巧贴——当Python遇上PDF
文章图片
合并
第一个工作是将5个发票pdf合并成10页 。 这里读取器和写入器应该怎么配合呢?
逻辑如下:
读取器将所有pdf读取一遍
读取器将读取的内容交给写入器
写入器统一输出到一个新pdf
这里还有一个重要的知识点:读取器只能将读取的内容一页一页交给写入器 。 因此 , 逻辑中第1步和第2步实际上不是彼此独立的步骤 , 而是读取器读取完一个pdf后 , 就将这个pdf全部页循环一遍 , 挨页交给写入器 。 最后等读取工作全部结束后再输出 。
水印
本次的工作是将下图作为水印添加到INV1.pdf中 。
实用办公技巧贴——当Python遇上PDF
文章图片
首先是准备工作 , 将需要作为水印的图片插入word中调整合适位置后保存为PDF文件 。 然后就可以码代码了 , 需要额外用到copy模块 , 具体解释见下图:
实用办公技巧贴——当Python遇上PDF
文章图片
就是把读取器和写入器初始化 , 并且把水印PDF页先读取好备用,核心代码稍微比较难理解:
实用办公技巧贴——当Python遇上PDF
文章图片
加水印本质上就是把水印PDF页和需要加水印的每一页都合并一遍 。 由于需要加水印的PDF可能有很多页 , 而水印PDF只有一页 , 因此如果直接把水印PDF拿来合并 , 可以抽象理解成加完第一页 , 水印PDF页就没有了 。
因此不能直接拿来合并 , 而要把水印PDF页不断copy出来成新的一页备用new_page , 再运用.mergePage方法完成跟每一页合并 , 把合并后的页交给写入器待最后统一输出!
关于.mergePage的使用:出现在下面的页.mergePage(出现在上面的页) , 最后效果如图:
实用办公技巧贴——当Python遇上PDF
文章图片
加密
加密很简单 , 只需要记住:「加密是针对写入器加密」因此只需要在相关操作完成后调用pdf_writer.encrypt(密码) , 以单个PDF的加密为例:
实用办公技巧贴——当Python遇上PDF
文章图片
当然 , Python的能力绝不止于对PDF的合并、拆分、加密、水印 , 使用Python结合Excel和Word实现更多的自动化需求都可以实现 , 更多精彩有待探索 。
【实用办公技巧贴——当Python遇上PDF】文章部分素材来源:AI科技大本营


    推荐阅读