首页 > 其他分享 >常用PDF库总结

常用PDF库总结

时间:2024-09-16 22:24:45浏览次数:20  
标签:总结 常用 Python PyPDF2 文档 pdfminer PDF 页面

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

常见PDF库
PyPDF2 (已不再维护,继任者PyPDF4)
由于PyPDF2似乎更知名,故本文以其作为条目列出。

PyPDF、PyPDF2及PyPDF4的渊源
pdfrw
自身不能创建新内容,但是集成了ReportLab,可以兼容ReportLab生成新页面。

ReportLab
商业版的开源版本,专业创建PDF内容如文本、图表等。

pikepdf
基于C++的QPDF,对标PyPDF2和pdfrw;偏向PDF底层。

pdfplumber
基于pdfminer.six,除了读取文本、形状(矩形、直线/曲线)外,还能解析表格。

几个提取PDF表格的Python库的对比。
pdfminer.six
pdfminer的社区维护版(pdfminer自2020年起不再积极维护)。

PyMuPDF
基于mupdf,功能全面,并以处理速度著称[3]。

borb
纯Python库,支持读、写、操作PDF文档,兼顾底层和高级应用。

对比
本文将Python操作PDF的能力从大粒度上分成提取内容、操作页面和创建内容三方面。前两者分别是针对已经存在的PDF文档的读和写操作,最后一项从内容上创建新文档。

提取内容如文本、图片、元信息
操作页面特指操作已经存在的页面,例如分割、合并、裁剪、旋转等
创建内容指创建或修改页面内容,例如文本、图片、形状
考虑到时效性,以下对比列出了撰写本文时(2021.01)相应的最新版本。修订:borb于 2022.06 新加入对比,时间点以此为准。

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

对商用不太友好指的是支持免费使用,但是要求引用其的程序也必须遵守相应协议即开源。如果需要闭源使用的话,需要向作者申请付费的商用授权。
最后以下图结束本文。

标签:总结,常用,Python,PyPDF2,文档,pdfminer,PDF,页面
From: https://www.cnblogs.com/rolandhe/p/18416699

相关文章

  • 今日总结1.3
    ‌软件构造主要学习设计模式、软件结构、模块化软件构造、面向对象的软件构造、软件重构与交付等方面的知识。‌‌设计模式‌是软件构造中的一个重要部分,它涉及如何针对接口编程而不是针对实现编程,旨在实现对象之间的松耦合设计,以及如何使用面向对象设计原则进行程序编码。学习设......
  • 2024.9.16 下午 总结(考 DS)
    T1做法1:莫队。(考虑一个数的出现次数变化时的影响。)应该可以直接做,似乎也可以正难则反(见做法2)。做法2:[扫描线](?)。按询问右端点排序。记一下每个位置前面最近的和它权值相同的位置。一种是直接做,分讨。一种是正难则反:算前缀和;算出现次数为\(2\)的数的贡献之和,减去这部分贡献。......
  • 错误总结反思
    0.概述这篇文章旨在记录我真实经历过的一些值得反思的错误,可能是自己犯的错误,也可能是其他人犯的错误。但是都是一些值得反思的问题,文章结构可能会比较乱,以后记录的问题多了肯定会再进行梳理。1.vectorsize为0在做"求TopK"算法问题时,遇到结果错误问题。经过调试发现那个长度为......