新闻api 私有变量 asynchronous mysqli plugins module oauth redis常用语句 path Web Uploader vue教程 bootstrap后台管理模板 java并发编程视频 java运行软件 hadoop创建文件夹 bitlocker加密好慢 配置tomcat环境变量 windows杀进程命令 js数组截取前5个 linux启动mysql命令 python加注释 python基本语法 python服务器开发 javalabel java中scanner java基础学习 java自学教程 java获取文件 java中的泛型 java程序设计教程 脚本之家官网 din字体下载 思源黑体cn 方正兰亭字体下载 flash制作工具 淘宝自动发货软件 win10环境变量 vue路由跳转 pr调整图层 cdr字体加粗
当前位置: 首页 > 学习教程  > 编程语言

安卓开发使用mupdf实现pdf文件的预览

2020/10/8 19:43:56 文章标签:

开发环境:android studio3.0.1 由于项目的需要,要在安卓端实现pdf文件的预览功能,使用到了mupdf这个工具,记录下移植的过程。 首先我用的是已经编译好的so库文件,在github上面有,文件名为mupdf-android-ma…

开发环境: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,再在该包下新建两个包,包名为mupdfdemoutils包名一个字都不能错,如果新建的包名不一样,后面会提示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里的内容到你项目文件中。


本文链接: http://www.dtmao.cc/news_show_250174.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?