本章会讲四种可以在Android端使用的pdf框架,并介绍其优势和劣势。
第一个当然是github上面star 最多android-pdfview,它是基于谷歌的一款开源PDF浏览框架VuDroid封装的Android端框架,
支持缩略图,缩放,页面枚举,默认起始页。还有pdf加载监听,pdf页面滑动监听。
功能很强大,不过很可惜,功能有限,作者也在15年停止了维护。
pdfium是谷歌开源的一款高性能的PDF渲染组件,用来作Chrome内核的pdf渲染。支持pdf加密文件打开,支持获取pdf文档信息,作者,标题,副标题,创建日期等…可以将指定的pdf页面渲染成bitmap,这个框架足以实现基本所有pdf定制化操作。美中不足的是框架比较大,对于移动端的包压缩是一个挑战
mupdf是一款轻量级的pdf浏览框架,基本上支持前面两者的功能,如果是文本的pdf文档还支持搜索,标注等功能。当之无愧的强大。虽说轻量,但编译出来的so库也不小。
Android在API19提供了android.graphics.pdf 这个pdf管理库,主要提供两个类pdfRender 和pdfDocument,pdfdocument 是将View转成pdf文件(require API19),pdfRender是将pdf文件绘制到bitmap上(require API21),这个就是原生提供的pdf浏览框架,但因为API要求很容易被拒之门外,不过随着API迭代,以后可能就无所谓了。
因为所有的框架都是将pdf转成图片做展示,所以定制化自己都能实现,那在这里这边对四者做一下对比。 这边的信息查看指pdf创建信息,大小指so库大小
框架名称 | 支持信息查看 | 支持文本检索 | API要求 | 原始/打包后大小 |
---|---|---|---|---|
VuDroid | false | false | API16 or lower | 19M->6.7M |
pdfium | true | false | API16 or lower | 30M->15.3M |
mupdf | true | true | API16 or lower | 70.2->36.6M |
PdfRenderer | false | false | API21 | 0 |
总结:mupdf功能最强大,pdfium次之,VuDroid和PdfRender都差不多。
但因为PdfRender有API限制。mupdf库有点大,所以大家根据需求来选择。
pdfiumDemo下载地址
//写的并不是很好,正在看其他的开源框架思考更好的封装思路ing~~~
mupdf源码