2022.06.07修订:新增第三方库borb。初稿写于2021.01.02,彼时borb才发布1.0版没几个月;两年不到,Github上已近三千赞。

PDF(Portable Document Format)是一种便携文档格式,便于跨操作系统传播文档。PDF文档遵循标准格式,因此存在很多可以操作PDF文档的工具,Python自然也不例外。面多众多的Python第三方库,本文从功能、开源协议及社区活跃度三方面加以对比,以便根据具体需求选择合适的库。

概况

功能对比从大粒度上分成了提取内容操作页面创建内容三方面。前两者分别是针对已经存在的PDF文档的读和写操作,最后一项从内容上创建新文档。考虑到时效性,以下对比列出了撰文时(2021.01)相应的最新版本。borb于 2022.06 新加入对比,其时间点以此为准。

  • 提取内容如文本、图片、元信息
  • 操作页面特指操作已经存在的页面例如分割、合并、裁剪、旋转等
  • 创建内容指创建或修改页面内容,例如文本、图片、形状
Python库 当前版本 Python版本 开源协议 最新更新 功能:提取内容 功能:操作页面 功能:创建内容 备注
PyPDF2 1.26.0 2.6-3.6 modified BSD 3年前 × PyPDF2已不再维护,继任者PyPDF4PyPDFPyPDF2PyPDF4的渊源参考此处)。由于PyPDF2似乎更知名,故以其作为条目列出。
pdfrw 0.4 2.6-3.6 MIT 3年前 × 自身不能创建新内容,但是集成了ReportLab,可以兼容ReportLab生成新页面
ReportLab 3.5.58 2.7, 3.6+ BSD 非常活跃 × × ReportLab的开源版本,专业创建PDF内容如文本、图表等
pikepdf 2.2.4 2.7, 3.6+ MPL 2.0 非常活跃 × 基于C++的QPDF,对标PyPDF2pdfrw;偏向底层
pdfplumber 0.5.25 3.6-3.8 MIT 活跃 × × 基于pdfminer.six;除了文本、形状(矩形、直线/曲线),还能解析表格几个提取PDF表格的Python库的对比参考此处
pdfminer.six 20201018 3.6+ MIT 2个月前 × × pdfminer的社区维护版,因为pdfminer自2020年起不再积极维护
PyMuPDF 1.18.5 3.6+ GPL V3 非常活跃 基于mupdf;以处理速度著称,参考此处
borb 2.0.27 3.6+ AGPL 非常活跃 纯Python库,支持读、写、操作PDF文档,兼顾底层和高级应用

点评

  • PyPDF2系列、pdfrwpikepdf专注对已经存在的PDF的操作(分割、合并、旋转等),前两者基本处于停止维护的状态。
  • pdfplumber及其依赖pdfminer.six专注PDF内容提取,例如文本(位置、字体及颜色等)和形状(矩形、直线、曲线),前者还有解析表格的功能。
  • ReportLab专注PDF页面内容(文本、图、表等)的创建。
  • PyMuPDFborb同时支持读、写及PDF页面操作,功能最为全面。其中,PyMuPDF尤其以速度快著称,而borb是新开发并深得好评的库,潜力无穷。但是,二者同为GPL家族的开源协议,对商用不太友好 *。

* 支持免费使用,但是要求引用其的程序也必须遵守相应协议即开源。如果需要闭源使用的话,需要向作者申请付费的商用授权。

最后以下图结束本文。

常用Python PDF库对比相关推荐

  1. python pdf库_3个Python PDF库,提取信息、转换格式、分割剪裁有它就够了!

    Python无处不在,似乎支持从主要网站到桌面实用程序到企业软件的所有功能.Python已经被用来编写流行的软件项目,如dnf/yum.OpenStack.OpenShot.Blender.Calib ...

  2. 怎样用Python提取信息呢?分享这3个Python PDF库

    很多时候我们都会用Python去取数据文件,这些文件中很多都是PDF格式,有些PDF文件解析的时候只能解析一部分内容出来,大段的文字没有解析出来,那怎么样才能用Python提取这些信息呢? 下面小千就 ...

  3. 常用Python标准库对象速查表(1)

    封面图片:<Python程序设计基础(第2版)>,董付国,清华大学出版社 =============== 常用Python标准库对象速查表(1) 标准库 对象 简要说明 math sin( ...

  4. python的格式转换库_3个Python PDF库,提取信息、转换格式、分割剪裁有它就够了!...

    PDFMiner: PDFMiner是一个从PDF文档中提取信息的工具.与其他PDF相关的工具不同,它只用于获取和分析文本数据.PDFMiner能获取页面中文本的准确位置,以及字体或行等其他信息.它还 ...

  5. 10个常用python标准库_【循序渐进学Python】11.常用标准库

    安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间.这里是一些常用标准库的简单说明.更多的标准库的说明,可以参考Python文档 sys 模块 ...

  6. 机器学习常用python三方库

    1.NumPy 最常用的也许是它的N维数组对象,其他还包括一些成熟的函数库,用于整合C/C++和Fortran代码的工具包,线性代数.傅里叶变换和随机数生成函数等.NumPy提供了两种基本的对象:nd ...

  7. 常用Python标准库

    众所周知,Python有庞大的库资源,有官方标准库以及第三方的扩展库.每个库都一把利器,能帮助我们快速处理某方面的问题.作为一名python的初学者,当把基本的语法.列表和元组.字典.迭代器.异常处理 ...

  8. 常用python机器学习库总结

    开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处 ...

  9. python mysql库对比_mysqlclient和PyMySQL对比

    环境:Python 3.5+, Django 1.9+ 最初用django时,搜索时发现PyMySQL的文章很多,然而在django的官方文档中python3版的mysql客户端驱动确没有提到PyMy ...

  10. 常用Python机器学习库介绍

    Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,再加上其简单.易学.速度快.开源免费.可移植性.可扩展性以及面向对象的特点,Python成为2017年最受欢迎的最受欢迎的编程 ...

最新文章

  1. The database returned no natively generated identity value错误解决方案
  2. shell脚本--02循环与条件
  3. BUUCTF-Reverce:不一样的flag
  4. mac 安装node_node 服务端部署
  5. web压测工具http_load原理分析
  6. 对象运算符.和[]的用法
  7. OSChina 周日乱弹 —— 快喊爸爸
  8. 煤粉粒度对shell气化的影响_提高水煤浆气化有效气成分的措施
  9. ubuntu在xampp下安装memcache扩展
  10. vb6 怎么把一个数组的 0 值 去掉_解决逆向查找问题?VLOOKUP、CHOOSE、IF,索引数组,轻松解决...
  11. Java Web学习视频
  12. 安泰测试新手教程-泰克数字示波器使用方法
  13. 体验经济:互联网生存的秘密
  14. Flutter气泡框实现
  15. Github和Git是啥意思?下面来简单了解下。
  16. 史上最全因果推断合集-uplift
  17. 我失窃的信用卡资料在4500英里外被使用,我试图找出它是怎么发生的
  18. 路由器上网功能正常但加载不出图片的解决办法
  19. 更改Ubuntu桌面环境
  20. pytest单元测试

热门文章

  1. 华为交换机初始化和配置SSH和TELNET远程登录方法
  2. 计算机二级试题aoa,浙江省高校计算机二级AOA考试excel试题及解析
  3. WEB UI设计尺寸规范
  4. 模拟数据生成工具--Faker
  5. 斐波那契堆 - 解析与实现
  6. 罗技 logic C930c 摄像头 驱动 win7 64位 家庭中文版 无法使用
  7. WPF 矢量字体图标
  8. 取手机号码php正则表达式,PHP获取手机号码的正则表达式写法
  9. notepadpython插件_Notepad Python
  10. 直流电机正反转驱动电路板