少年击剑更吹箫,剑气箫心一例消。这篇文章主要讲述在Android项目中引入MuPdf相关的知识,希望能为你提供帮助。
由于公司手机App要加入一个附件查看功能,需要查看PDF文件,在网上找了许多第三方工具,最后选择了MuPDF。
更多第三方工具可以查看大神总结的:http://www.cnblogs.com/pokeGame/archive/2011/06/02/2068575.html
MuPDF介绍:
android 设备上轻量级、高品质的 PDF/XPS/CBZ 查看器。
MuPDF 上的呈现器专为高质量的抗失真图像量身打造,它以像素级的精度高品质呈现文字和文字间的间距,从而获得最高级别的显示保真度,在设备屏幕上再现印刷纸张的显示效果。
【在Android项目中引入MuPdf】MuPDF 小巧、快速,但功能完备。它可以支持 PDF 文件的透明化、加密、文件中的超链接、批注、搜索等众多功能;用户还可以利用它查XPS/OPENXPS 文件。MuPDF 采用模块化编程,如果用户非常渴望某些功能,软件集成人员可以将这些功能纳入。
准备工作:
在Androi项目中引入MuPDF,首先要有编译好的包,可在以下地址下载源码编译:git://git.ghostscript.com/mupdf.git,编译过程很复杂,我失败了很多次,目前还不知道到底是哪里有问题。
所以我使用的是别人编译好的:http://pan.baidu.com/s/1CHp3M
有了编译好的包,一切都简单了,现在我们开始引入MuPDF。
引入步骤:
- 将jni,libs,obj 文件夹复制到app文件夹下,将res 文件夹复制到app\\src\\main文件夹下,将src\\com文件夹复制到app\\src\\main\\java\\ 文件夹下,覆盖原有文件
- 在app中的build.gradle中添加
//将libs中的.so文件加入APK中 sourceSets { main { jniLibs.srcDirs = [\'libs\'] } }
所有代码如下:
apply plugin: \'com.android.application\'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "com.example.admin.pdfread_test2"
minSdkVersion 17
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(\'proguard-android.txt\'), \'proguard-rules.pro\'
}
}
//将libs中的.so文件加入APK中
sourceSets {
main {
jniLibs.srcDirs = [\'libs\']
}
}
}
dependencies {
compile fileTree(dir: \'libs\', include: [\'*.jar\'])
androidTestCompile(\'com.android.support.test.espresso:espresso-core:2.2.2\', {
exclude group: \'com.android.support\', module: \'support-annotations\'
})
compile \'com.android.support:appcompat-v7:24.2.1\'
testCompile \'junit:junit:4.12\'
}
- AndroidManifest.xml配置MuPDFActivity和SD卡访问权限
< activity android:name="com.artifex.mupdf.MuPDFActivity"> < intent-filter> < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> < /intent-filter> < /activity> < !--jniLibs.srcDirs = [\'libs\']--> < !-- SD卡访问权限 --> < uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> < !-- 读 -->
- 调用MuPDF显示PDF文件
String Workstation_DataFileUrl = getApplicationContext().getFilesDir().getAbsolutePath() + "/sample.pdf"; Uri uri = Uri.parse(Workstation_DataFileUrl); Log.d("MyDebug", Workstation_DataFileUrl); Intent intent = new Intent(MainActivity.this, MuPDFActivity.class); intent.setAction(Intent.ACTION_VIEW); intent.setData(uri); startActivity(intent);
- 配置你的样式,在values.xml文件中有这样一段配置:
< style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> < !-- Customize your theme here. --> < item name="colorPrimary"> @color/colorPrimary< /item> < item name="colorPrimaryDark"> @color/colorPrimaryDark< /item> < item name="colorAccent"> @color/colorAccent< /item> < /style>
用来配置你的样式,在colors.xml文件中配置对应的颜色
- 编译执行,编译时会报错【错误: 程序包R不存在】, 引入包即可
在AndroidManifest.xml添加一下配置,配置目录Activity,显示PDF文档中的目录
< activity android:name="com.artifex.mupdf.OutlineActivity"> < /activity>
推荐阅读
- Android开发之InstanceState详解
- 下载编译运行android 7.1系统(ubuntu 16.0.4)
- android studio 中移除module和恢复module
- Cocos2dx3.11.1Android播放视频,后台 黑屏,无法记忆播放bug修改
- MongoDB与MySQL有什么区别(功能上和使用上?)
- Createview–基于类的视图Django
- PHP abs()函数用法示例
- Virtusa面试经验|实习
- Linux stty命令用法示例介绍