使用Python操作PDF:常用PDF库总结
常见PDF库
由于PyPDF2似乎更知名,故本文以其作为条目列出。
自身不能创建新内容,但是集成了ReportLab
,可以兼容ReportLab
生成新页面。
商业版的开源版本,专业创建PDF内容如文本、图表等。
基于C++的QPDF,对标PyPDF2
和pdfrw
;偏向PDF底层。
基于pdfminer.six
,除了读取文本、形状(矩形、直线/曲线)外,还能解析表格。
几个提取PDF表格的Python库的对比[2]。
pdfminer
的社区维护版(pdfminer
自2020年起不再积极维护)。
基于mupdf
,功能全面,并以处理速度著称[3]。
纯Python库,支持读、写、操作PDF文档,兼顾底层和高级应用。
各库基础信息
本文将Python操作PDF的能力从大粒度上分成提取内容
、操作页面
和创建内容
三方面。前两者分别是针对已经存在的PDF文档的读和写操作,最后一项从内容上创建新文档。
提取内容
如文本、图片、元信息操作页面
特指操作已经存在的页面,例如分割、合并、裁剪、旋转等创建内容
指创建或修改页面内容,例如文本、图片、形状
考虑到时效性,以下对比列出了撰写本文时(2021.01)相应的最新版本。修订:borb于 2022.06 新加入对比,时间点以此为准。
库名 | py版本 | 提取内容 | 操作页面 | 创建内容 |
---|---|---|---|---|
PyPDF2 | 2.6~3.6 | ✔️ | ✔️ | ⛔ |
pdfrw | 2.6~3.6 | ✔️ | ✔️ | ⛔ |
ReportLab | 2.7~3.6 | ⛔ | ⛔ | ✔️ |
pikepdf | 2.7~3.6 | ✔️ | ✔️ | ⛔ |
pdfplumber | 3.6~3.8 | ✔️ | ⛔ | ⛔ |
pdfminer.sia | 3.6+ | ✔️ | ⛔ | ⛔ |
PyMuPDF | 3.6+ | ✔️ | ✔️ | ✔️ |
borb | 3.6+ | ✔️ | ✔️ | ✔️ |