pypdf 历史

起源:pyPdf (2005-2010)

在 2005 年,Mathieu Fenniak 推出了 pyPdf,作为一个“PDF 工具包...”,专注于以下功能:

  • 文档操作:按页拆分、合并和拼接;

  • 文档内部分析;

  • 页面裁剪;

  • 文档加密和解密。

PyPI 上的最后一个版本是 pyPdf 1.13,发布于 2010 年。

PyPDF2 的诞生 (2011-2016)

2011 年底,在与 Mathieu 和其他人讨论后,Phaseit 将 PyPDF2 作为 pyPdf 的一个分支发布到 GitHub。最初的推动力是处理更广泛的 PDF 输入实例;Phaseit 的商业工作经常遇到一些“野外”中的 PDF 实例,需要管理(主要是合并和分页),但这些实例偏离 PDF 标准太多,pyPdf 无法读取它们。PyPDF2 能够读取更多种类的实际 PDF 实例。

无论是 pyPdf 还是 PyPDF2,都并不旨在成为“通用”的工具,即提供所有可能的 PDF 相关功能。值得注意的是,Mariano Reingart 的 pyfpdfReportLab 更为相似,因为 ReportLab 和 pyfpdf 都强调文档生成。有趣的是,pyfpdf 内置了一个基本的 HTML→PDF 转换器,而 PyPDF2 并不支持 HTML。

那么,PyPDF2 的真正用途是什么呢?可以考虑一下流行的 pdftk。PyPDF2 完成了 pdftk 的工作,而且是在当前的 Python 进程中完成的,并且它处理的 PDF 格式变体范围更广。PyPDF2 有自己的常见问题解答,回答了其他一些出现的问题。

2012 年 3 月,Reddit [/r/python 社区] 简短而间接地讨论了 PyPDF2。

核心开发者/维护者是 Matthew Stamy。

PyPDF3 和 PyPDF4 (2018 - 2022)

有两种方式试图让 PyPDF2 重新活跃起来:PyPDF3 和 PyPDF4。

PyPDF3 在 2018 年发布了第一个版本,并在 2022 年 2 月发布了最后一个版本。它并未从 PyPDF2 获得大量用户基础。

PyPDF4 只有一个 2018 年的发布版本。

PyPDF2:重生 (2022)

Martin Thoma 于 2022 年 4 月接管了 PyPDF2 的维护工作。当时有超过 100 个待处理的 PR 和 321 个待解决的问题。

pubpub-zz 非常活跃,特别是在文本提取方面。

Matthew Peveler 在代码审查和项目决策方面提供了大量帮助。

exiledkingcc 为现代加密方案添加了支持。

pypdf:回归本源 (2023 至今)

为了让初学者更容易上手,PyPDF2 被重新合并回 pypdf。现在是全小写,没有版本号。我们希望开发 PyPDF3 和 PyPDF4 的开发者也能加入我们。

PyPDF2 >= 3.0.0 相比,pypdf >= 3.1.0 现在提供了以下功能: