PDF( Portable Document Format ),中文名称 便携文档格式 是我们常常会打仗到的一种文件格式,文献、文档...很多都是PDF格式。
它以格式稳定的上风,使得我们在打印、分享、传输过程中能够最优的保持原有色彩和格式。

这是

PDF因此PostScript措辞图像模型为根本的一种文档格式,它在格式的稳定性方面虽然具有很大上风。
但是,在可编辑性方面却为利用者引入了其余一个困扰。

熊猫pdf是什么可以删吗_付费是弗成能的20行Python代码实现一款永远免费PDF编辑对象 演讲稿范文

例如,在文档的分割、合并、剪切、转换、编辑等方面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直接安装:

$ pip install PyPDF2

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

删除PDF页

先给出实当代码,

from PyPDF2 import PdfFileWriter, PdfFileReaderoutput = PdfFileWriter() // 1input1 = PdfFileReader(open("example.pdf", "rb")) // 2def delete_pdf(index): pages = input1.getNumPages() // 3 for i in range(pages): if i+1 in index: continue output.addPage(input1.getPage(i)) // 4 outputStream = open("PyPDF2-output.pdf", "wb") output.write(outputStream) // 5delete_pdf([2,3,4])

下面来阐明一下代码中的几个关键点:

声明一个用于输出PDF的实例;读取本地PDF文件;获取PDF文档的页数;读取PDF的第 i 页,添加到输出 output 实例中;把编辑后的文档保存到本地;合并PDF

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

方法1:

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

from PyPDF2 import PdfFileWriter, PdfFileReaderoutput = PdfFileWriter()input1 = PdfFileReader(open("example.pdf", "rb"))input2 = PdfFileReader(open("simple2.pdf", "rb")) // 1def merge_pdf(add_index, origin_index): pages = input1.getNumPages() k = 0 for i in range(pages): if i+1 in add_index: output.addPage(input2.getPage(origin_index[k])) // 2 pages += 1 k += 1 output.addPage(input1.getPage(i)) outputStream = open("PyPDF2-output.pdf", "wb") output.write(outputStream)merge_pdf([2,3,4], [0, 0, 0])读取须要合并的源文件;遍历到指定页,合并源PDF的页面;方法2:

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

from PyPDF2 import PdfFileMerger // 1merger = PdfFileMerger()input1 = open("document1.pdf", "rb") // 2input2 = open("document2.pdf", "rb")input3 = open("document3.pdf", "rb")merger.append(fileobj = input1, pages = (0,3)) // 3merger.merge(position = 2, fileobj = input2, pages = (0,1)) // 4merger.append(input3) // 5output = open("document-output.pdf", "wb")merger.write(output)导入PyPDF2合并模块 PdfFileMerger ;读取须要处理和合并的PDF文档;从第一个PDF文档中取出须要合并的前3页;把第二个PDF文档的第一页插入到文档中;把第三个PDF文档附到输出文档末端;

除了上述先容的2项紧张功能,PyPDF2也有一些其他小功能:

旋转

input1.getPage(1).rotateClockwise(90)

使得页面1旋转90度。

添加水印

page = input1.getPage(3)watermark = PdfFileReader(open("watermark.pdf", "rb"))page.mergePage(watermark.getPage(0))

个中,水印存储在其余一个PDF文档 watermark.pdf 中。

加密

password = "secret"output.encrypt(password)

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

pdfminer

前面先容的PyPDF2紧张善于于PDF页面级编辑,而对付文本和源数据级别编辑能力较弱。

以是,这里就来先容其余一款Python库来填补它的不敷。

PDFMiner是一个PDF文档的文本提取工具,它具有如下特性:

能够准确获取文本的位置和布局信息;可以将PDF转换为HTML/XML等格式;可以提取目录;可以提取标签内容;支持各种字体类型(Type1、TrueType、Type3和CID);支持中、日、韩措辞和 垂直书写 文本;安装

$ pip install pdfminerPDF转TxT

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

$ pdf2txt.py samples/simple1.pdf总结

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