Android端加载展示PDF文件的实现方式

862 阅读2分钟

背景

在加载PDF文件上,Android没有iOS那么完美,自带的PDFRender比较鸡肋,所以大多会借助第三方库来实现,但三方库也会遇到一些展示问题,需要结合项目自身做些取舍。本文介绍几种加载展示PDF文件的实现方式,方便大家选择。


1、AndroidPdfViewer

github.com/barteksc/An… 优点是性能佳,集成简单。缺点是目前项目早已停止维护,遇到问题可能需要自己想办法;集成后会造成app包体积的增加。

2、MuPdf

www.mupdf.com/ 优点是性能佳,集成起来没有 AndroidPdfViewer 简单,但是项目目前还在维护状态,是 AndroidPdfViewer 不错的替代。缺点是包体积的增加会比较显著。

3、mozila/pdf.js

github.com/mozilla/pdf… 优点是采用 webview 形式,调用方便,并且可以保持ios和android两端加载方式一致(虽然ios可能自带的加载更好);项目目前也还处于维护状态。缺点是性能不佳,在加载都是高清大图的pdf文件时,有可能导致内存溢出,闪退问题。

4、MuPdf.js

mupdf.readthedocs.io/en/latest/m… 看官方介绍是也支持 js 的,只是没有尝试成功,所以对于其实际加载效果未知,如果性能不错的话,倒也是 pdf.js 的一个替代。

5、pdfh5.js

github.com/gjTool/pdfh… 优点是采用 webview 形式,调用方便,相比 pdf.js,在同样的场景下测试,pdfh5.js 能完整的加载,而 pdf.js 则出现了闪退异常(也有可能是我测试时的 pdf.js 版本较老的原因)。缺点是性能不佳,相比原生加载肯定要差些。


以上就是我了解到的 Android 关于加载展示PDF文件的实现方式,其实不管哪种,底层的实现都要到 Native 层去,如果在加载展示上遇到些比较难处理的,要么深入到底层解决(但这种方式成本比较高,难度也比较大),要么就多种实现方式结合起来处理(这种可以快速解决问题,对于不是核心业务场景的情况下我觉得可以采用)。