安卓开发使用mupdf实现pdf文件的预览
开发环境:android studio3.0.1由于项目的需要,要在安卓端实现pdf文件的预览功能,使用到了mupdf这个工具,记录下移植的过程。首先我用的是已经编译好的so库文件,在github上面有,文件名为mupdf-android-master.zip,下载好解压后在src/main/jniLibs得到如下文件。将这三个文件夹复制到你新建的工程项目的app/libs目录下,如果没有这个目录
开发环境:android studio3.0.1
由于项目的需要,要在安卓端实现pdf文件的预览功能,使用到了mupdf这个工具,记录下移植的过程。
首先我用的是已经编译好的so库文件,在github上面有,文件名为mupdf-android-master.zip
,下载好解压后在src/main/jniLibs得到如下文件。
将这三个文件夹复制到你新建的工程项目的app/libs目录下,如果没有这个目录的自己建一个。复制好后如下图所示。
接着在你的build.gradle文件里添加如下内容:
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
点击build/Make Project,成功后在libs目录下会生成Native_Libs2.jar
文件。
接着在项目中新建一个包,包名为com.artifex
,再在该包下新建两个包,包名为mupdfdemo
和utils
,包名一个字都不能错,如果新建的包名不一样,后面会提示UnsatisfiedLinkError错误。建好后的包需和下图一样:
然后回到刚刚解压文件夹,把src/main/java/com/artifex下的两个文件夹里的文件全部复制到上面建好的两个包里。
再把src/main/res下的所有文件复制到你的项目的res文件夹下,复制时会有提示说有几个文件已存在是否覆盖?如果你项目是刚建好的可以直接覆盖,否则选择全否,不然你原来的文件会丢失。
最后就可以直接调用MuPDFActivity实现预览了。
Uri uri = Uri.parse(filename);
Intent intent = new Intent(MainActivity.this,MuPDFActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
上张效果图
如果复制res时没有选择覆盖原文件,那么需要选择性地复制压缩包里values/color.xml和values/string.xml里的内容到你项目文件中。
更多推荐