付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具

  ​PDF是我们经常会接触到的一种文件格式,文献、文档...很多都是PDF格式。它以格式稳定的优势,使得我们在打印、分享、传输过程中能够最优的保持原有色彩和格式。

  PDF是以PostScript语言图像模型为基础的一种文档格式,它在格式的稳定性方面虽然具有很大优势。但是,在可编辑性方面却为使用者引入了另外一个困扰。

  例如,在文档的分割、合并、剪切、转换、编辑等方面PDF就有些捉襟见肘了。

  Adobe Reader、福昕阅读器、熊猫PDF...经常用到的PDF工具只能用于文档阅读,但是免费版都不可以用于文档编辑。虽然,网页版PDF工具,例如SmallPDF、I love PDF可以用于PDF的编辑,但是对于文档大小也有限制。

  曾经,为了替换PDF中的一页,我几乎试遍了所有市面上主流的PDF工具,最终还是不得不选择使用付费工具来解决问题。

  事后想了想,既然这些商业化软件不靠谱,为什么不考虑自己动手开发一款工具呢?明明几十行代码能够解决的问题,为什么要费那么多劲去下载、安装那些没有节操的软件呢?

  本文就来介绍一下利用Python轻松开发一款PDF编辑工具,可以用于PDF转TxT、分割、合并、剪切、转换。

  PyPDF2

  PyPDF2是一个第三方的python PDF库,它能够对PDF文件进行分割、合并、裁剪和转换页面。

  另外,它还可以对PDF文件添加自定义数据、水印、密码,也可以从PDF文件中检索出文本和元数据。

  安装

  使用pip直接安装:

  下面就来演示几项PDF编辑功能,并且会逐行解释代码的含义。

  删除PDF页

  先给出实现代码,

  下面来解释一下代码中的几个关键点:声明一个用于输出PDF的实例;读取本地PDF文件;获取PDF文档的页数;读取PDF的第页,添加到输出实例中;把编辑后的文档保存到本地;

  合并PDF

  已经实现了删除PDF页,接下来就看一下如何把另外一个PDF中的页面合并到当前PDF中。

  方法1:

  可以沿着前面删除PDF页的方式进行拓展一下,对PDF进行合并。

  读取需要合并的源文件;遍历到指定页,合并源PDF的页面;

  方法2:

  除了方法1,还有另外一种方法可以合并PDF:

  导入PyPDF2合并模块;读取需要处理和合并的PDF文档;从第一个PDF文档中取出需要合并的前3页;把第二个PDF文档的第一页插入到文档中;把第三个PDF文档附到输出文档末尾;

  除了上述介绍的2项主要功能,PyPDF2也有一些其他小功能:

  旋转

  使得页面1旋转90度。

  添加水印

  其中,水印存储在另外一个PDF文档中。

  加密

  首先给一个密码,然后使用对输出文档进行加密。

  pdfminer

  前面介绍的PyPDF2主要擅长于PDF页面级编辑,而对于文本和源数据级别编辑能力较弱。

  所以,这里就来介绍另外一款Python库来弥补它的不足。

  PDFMiner是一个PDF文档的文本提取工具,它具有如下特性:能够准确获取文本的位置和布局信息;可以将PDF转换为HTML/XML等格式;可以提取目录;可以提取标签内容;支持各种字体类型(Type1、TrueType、Type3和CID);支持中、日、韩语言和垂直书写文本;

  安装

  PDF转TxT

  pdfminer在GitHub的托管项目中,在目录下给出了一些实用的工具集,例如,PDF转HTML、PDF转HTML、PDF转TXT。我们可以直接通过使用下面命令提出PDF文档中的文本信息。

  总结

  通过上述2款Python库,就可以实现从页面到文本元数据的编辑,本文只是简单的介绍了每项的基本用法。关于详细的用法和函数列表,可以阅读官方文档,或者阅读GitHub上项目源码进行了解。此外,可以在这些基本的用法基础上进行发散思维,发掘更多有价值的应用场景,例如,提出文本数据之后调用翻译API进行文献翻译。也可以,对软件进行封装,开发成一款通用的PDF编辑工具。

  推荐阅读

  推荐免费好用的PDF阅读器(兼编辑功能)???有哪些好用的开源软件?有比百度网盘还优秀的网盘吗?

  hello,大家好,我是Jackpop,重点大学本科毕业后保送到哈工大计算数学专业读研,有多年国内头部互联网、IT公司工作经验,先后从事过计算机视觉、推荐系统、后端、数据等相关工作。如果同学们在升学考研、职业规划、高考志愿、简历优化、技术学习等方面有困惑,欢迎大家前来咨询!