20行Python代码实现永久免费PDF编辑工具

周予安
周予安
发布时间:2026-10-15 | 5人浏览过
原创

本文介绍如何利用Python的PyPDF2和pdfminer库,通过少量代码实现PDF文件的永久免费编辑。内容涵盖安装步骤、页面删除与合并、旋转与水印添加、文档加密以及文本提取等核心功能,提供具体代码示例与解析,帮助开发者快速构建自定义PDF处理工具。

PDF是日常工作中极为常见的文件格式,广泛应用于文献、合同及各类文档中。凭借其格式高度稳定的特性,PDF在打印、分享及传输过程中能够最大程度地保留原始的色彩与排版效果。

PDF基于PostScript语言图像模型构建,虽然在格式稳定性上表现优异,但在可编辑性方面却给使用者带来了诸多不便。

特别是在文档分割、合并、剪切、格式转换及内容编辑等场景下,PDF往往显得力不从心。

诸如Adobe Reader、福昕阅读器、熊猫PDF等常用工具主要侧重于文档阅读,其免费版本通常不支持编辑功能。虽然SmallPDF、I love PDF等网页版工具支持编辑,但往往对文档大小有限制。

此前,为了替换PDF中的某一页,我曾尝试市面上所有主流工具,最终仍不得不付费使用专业软件才能解决问题。

反思之后,既然商业化软件存在局限,为何不尝试自行开发一款工具?既然几十行代码即可解决的需求,何必耗费精力去下载、安装那些缺乏诚意且可能收费的软件?

本文将介绍如何利用Python轻松开发一款PDF编辑工具,实现PDF转TXT、页面分割、合并、剪切及格式转换等功能。

PyPDF2

PyPDF2是一个第三方Python库,支持对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页,并将其添加到输出实例中;
  • 将编辑后的文档保存至本地。

合并PDF

在实现删除页面功能后,接下来演示如何将其他PDF中的页面合并到当前文档中。

方法1:

可基于前述删除页面的逻辑进行拓展,实现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文档附加到输出文档末尾;

除上述两项主要功能外,PyPDF2还提供了一些其他实用小功能:

旋转

input1.getPage(1).rotateClockwise(90)

可将页面1顺时针旋转90度。

添加水印

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

其中,水印内容存储在另一个名为watermark.pdf的PDF文档中。

加密

password = "secret"
output.encrypt(password)

首先设定一个secret密码,随后使用encrypt方法对输出文档进行加密处理。

pdfminer

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

因此,这里介绍另一款Python库以弥补这一不足。

PDFMiner是一款专注于PDF文档文本提取的工具,具备以下特性:

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

安装

$ pip install pdfminer

PDF转TXT

pdfminer在GitHub托管项目中,于tools目录下提供了一系列实用工具集,如PDF转HTML、PDF转TXT等。我们可以直接通过以下命令提取PDF文档中的文本信息。

$ pdf2txt.py samples/simple1.pdf

总结

通过上述两款Python库,即可实现从页面操作到文本元数据的完整编辑流程。本文仅简要介绍了各项基本用法,详细用法及函数列表可参考官方文档或GitHub项目源码。此外,可在基础用法上拓展思维,挖掘更多有价值的应用场景,例如提取文本数据后调用翻译API进行文献翻译,或对软件进行封装,开发成通用的PDF编辑工具。

仅用20行Python代码便轻松解决了长期困扰用户的PDF编辑难题,充分彰显了Python的作用与价值。

关于20行Python代码实现永久免费PDF编辑工具的文章介绍至此,更多相关Python PDF编辑工具内容请搜索本站历史文章或继续浏览后续相关文章,希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表