前面总结了几种PDF查看的方式,如果有人在实际中应用了,可能会发现,还是存在一些问题,比如部分PDF文件无法查看并且还报错导致崩溃。恰巧我们最近的应用中要查看的PDF文件数量较多,问题就越发的明显了。所以只能又找其他的了。
就是MuPDF了,这个用过的都说好。
如果你对查看的界面没有什要求,能稳定的查看就行,可以直接添加依赖,步骤如下:
1.添加 MuPDF SDK 到你的工程
该库需要Android 4.1或更高版本。确保应用程序build.gradle中的minSdkVersion至少为16。
android {
defaultConfig {
minSdkVersion 16
…
}
…
}
2.maven添加
allprojects {
repositories {
jcenter()
maven { url ‘http://maven.ghostscript.com’ }
…
}
}
3.在app下的gradle里添加依赖
dependencies {
compile ‘com.artifex.mupdf:viewer:1.12.+’
…
}
4.愉快的跳转查看了
private void readPdf(String pdfFilePath) {
File file = new File(pdfFilePath);
Uri uri = Uri.fromFile(file);
Intent intent = new Intent(this, DocumentActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
}
这里涉及到的文件下载保存,前面一篇已经写过了可以参考,写的不好,见谅。
成功查看后,可爱的设计师小姐姐可能要你这样显示或者按照产品需求来。不急,下面来看看。
下面都将是在lib工程中操作
上面成功编译成功后,再下面的路径(C:\Users\xx.gradle\caches\modules-2\files-2.1\com.artifex.mupdf)中找到缓存文件,fitz,后面会用到。
1.viewer:使用git把这个拷下来
$ git clone git://git.ghostscript.com/mupdf-android-viewer.git
拉下来后,把viewer中的lib文件整个拖到你的工程中,lib的名字改成mupdf-lib(只要和上面的名字一致就行)
2.由于viewer是个独立的工程,我们要修改的显示页面也在这里面,所以作为module
1)在setting.gradle中配置添加:
include ‘:mupdf-lib’
2)在app下的gradle中添加:
compile project(‘:mupdf-lib’)
3.删除lib中的fitz依赖,将前面缓存文件中的fitz(aar格式)解压出来,复制classes.jar(你也可以改名字,例如fitz.jar)到mupdf-lib中的libs。
4.解压后的fitz文件中的jni目录下有所有的so,考虑到apk的体积和兼容性,我暂时选了armeabi,复制到mupdf-lib中的libs。
5.在其gradle中添加:
android {
…
sourceSets {
main {
jniLibs.srcDirs = [‘libs’]
}
}
}
6.跳转路径保持一致,不出意外你已经可以正常跑起来了
7.修改显示页面
布局文件在document_activity里,对应的类是这个DocumentActivity。
我做的界面就很简洁了,只留了个底部显示页码的textview,其他无用的布局和代码都删除。对应的资源也删干净了。
8.最后一步,编译release版,查看pdf文件,正常。最终包的大小只增大了1.45M,在可接受的范围内,收工。
附上官网地址,有兴趣的可以去看看
https://mupdf.com/