# 教你20行python代码实现编辑永久免费pdf工具

> 作者/来源: UCloud 运营管理员
> 发布时间: 2022-09-16T08:34:00.000Z
> 分类: 解决方案
> 标签: 存储, Python
> 原文链接: http://117.50.162.249:3000/yun/articles/2530

---

# 教你20行python代码实现编辑永久免费pdf工具

> 来源: https://www.ucloud.cn/yun/127755.html
> 作者: 89542767
> 发布日期: 发布于2022-09-16 16:34

小编写这篇文章的主要目的，主要是给大家介绍一下关于python代码实现pdf编辑免费pdf工具相关知识的解答。

　　PDF是在日常生活中使用范围还是比较的广泛的，很多的文档都是PDF格式。格式稳定是他的一个优势，使得我们在打印、分享、传输过程中能够最优的保持原有色彩和格式。

　　PDF各种各样的的版本是比较的多的，它在格式的稳定性方面虽然具有很大优势。但是，在可编辑性方面却为使用者引入了另外一个困扰。

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

　　pdf版本是比较多的，有的是在线版的，有的是APP版本的，它们在优势方面，各自有各自的优势。

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

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

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

**PyPDF2**

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

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

　　安装

　　使用pip直接安装：

```
$pip install PyPDF2
```

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

　　删除PDF页

　　先给出实现代码，

```
　　from PyPDF2 import PdfFileWriter,PdfFileReader
　　output=PdfFileWriter()//1
　　input1=PdfFileReader(open("example.pdf","rb"))//2
　　def 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)//5
　　delete_pdf([2,3,4])
```

　　下面来解释一下代码中的几个关键点：

　　声明一个用于输出PDF的实例；

　　读取本地PDF文件；

　　获取PDF文档的页数；

　　读取PDF的第i页，添加到输出output实例中；

　　把编辑后的文档保存到本地；

**合并PDF**

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

　　方法1：

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

```
　from PyPDF2 import PdfFileWriter,PdfFileReader
　　output=PdfFileWriter()
　　input1=PdfFileReader(open("example.pdf","rb"))
　　input2=PdfFileReader(open("simple2.pdf","rb"))//1
　　def 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//1

　　merger=PdfFileMerger()

　　input1=open("document1.pdf","rb")//2

　　input2=open("document2.pdf","rb")

　　input3=open("document3.pdf","rb")

　　merger.append(fileobj=input1,pages=(0,3))//3

　　merger.merge(position=2,fileobj=input2,pages=(0,1))//4

　　merger.append(input3)//5

　　output=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 pdfminer
```

　　PDF转TxT

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

```
$pdf2txt.py samples/simple1.pdf
```

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

　　20行Python代码就轻松解决了困扰很多同学已久的PDF编辑问题，可见Python的作用和价值是不可忽视的。

　　综上所述，相关知识就为大家解答到这里了，希望可以能给大家带来帮助。