Android App 集成 MuPdf 实现 Pdf 阅读、编辑、标记等功能
By Long Luo
之前开发 Android电子书阅读器App 时,需要支持 Pdf 文件的阅读和标记功能,经过分析和测试不同实现方案,最终选择 MuPdf 方案。
Pdf解决方案
目前手机上实现 Pdf 文件的支持,有很多解决方案:
Andorid原生自带的Pdf解决方案,主要提供两个类 PdfRenderer 和 PdfDocument ,但是 Lollipop 才有的类,PdfRenderer 中核心代码是用的 native 方法,所以没办法将 PdfRenderer 从 SDK 中抽取出来用,局限性大,不采用。
开源 AndroidPdfViewer ,完全使用 Java 实现,但问题在于太大,性能不及原生,所以放弃。
MuPdf,一款轻量级的 pdf 框架,支持前面两者功能,同时如果是文本的 pdf 文档还支持搜索、标注等功能,使用 native C 代码实现,快,编译好的so库也只有10M大小。
调起手机中第三方支持 Pdf 阅读的应用;
通过 pdf.js 实现在线预览,需要调用网页,性能不及原生,放弃。
MuPdf
MuPdf 是一个轻量级 PDF、XPS 和 E-book 阅读器,支持全部平台。
源码下载地址:https://mupdf.com/downloads/archive/
官网提供了一个例子:MuPDF Android Viewer,下面我们来编译并实现。
MuPdf编译
下载源码:1
$ git clone --recursive git://git.ghostscript.com/mupdf-android-viewer.git
安装Cygwin或者直接在Linux下使用:1
2mupdf-android-viewer$cd jni
mupdf-android-viewer/jni$make generate
会调用 make -j4 -C libmupdf generate
命令编译字体文件,然后在 libmupdf
目录下生成 generated
文件夹,里面主要是一些字体文件。