概述
前段时间由于项目需要,要在手机上对PDF文件进行预览、签名、上传等操作,经过各种分析、调研及测试,最终决定用mupdf。(好像目前能对pdf文档支持搜索,标注等功能,也只有mupdf可以实现)
1.pdf各种方案简介
一.andorid原生自带的pdf管理库,主要提供两个类pdfRender和pdfDocument,缺点就是必须是API>=21(也就是5.0以上)的版本才能支持,局限性太大。
二.一个github上面的开源库PdfViewer,项目地址: https://github.com/barteksc/AndroidPdfViewer ,一个很重要的硬伤,那就是会使apk增加16M左右的大小,很难让人接受。
三..mupdf,是一款轻量级的pdf浏览框架,基本上支持前面两者的功能,如果是文本的pdf文档还支持搜索,标注等功能。当之无愧的强大。
四.在webView中调用GoogleDocs实现在线预览,但是需要翻墙,所以果断放弃。
五.调起第三发支持PDF阅读的应用。
六.通过PDF.js实现在线预览,这是一个github上的开源库。项目路径:https://github.com/mozilla/pdf.js
由于我需要对pdf文件进行签名的批注操作,故选择使用mupdf。
2.mupdf简介
官网地址:MuPDF
官网都是英文,如果英文不好看起来确实很费劲(本人就是)O(∩_∩)O哈哈~
android集成快捷路径:https://www.mupdf.com/docs/android-sdk.html(英文不好的童鞋,直接去这里看如何集成吧)
源码下载地址:Index of /downloads/archive
3.MuPDF手写墨迹,默认保存的墨迹是红色的,怎么修改颜色?如何更改mupdf的颜色绘图?
1.参考大神的介绍:【mupdf笔记01】MuPDF手写墨迹,默认保存的墨迹是红色的,怎么修改颜色?如何更改mupdf的颜色绘图?_mupdf solid line_掘金者说的博客-CSDN博客
MuPDF 手写功能的时候,画笔颜色可以自己定义,(在PageView类中)不管把颜色定义成什么,当调用MuPDFCore.save时,保存笔记,笔记的颜色显示默认红色的,也有大神把mupdf源码分析了一遍,默认颜色就是红色,不知道怎么改?
两种方案: 第一种,直接修改mupdf里面的color数组,然后编译mupdf so包 第二种,修改方法,添加color参数,然后编译mupdf so包 两种方式,均需要编译mupdf库。
签名时候可以任意颜色可以设置,但是保存时候就是红色。发现源代码C语言中定性的为红色。
本人用的是mupdf-1.9a-source,可以在上面的源码下载地址中下载https://mupdf.com/downloads/archive/mupdf-1.9a-source.tar.gz
查看源代码mupdf-1.9a-source/platform/android/viewer/jni/mupdf.c中的函数MuPDFCore_addInkAnnotationInternal。在那里你会看到颜色被线条硬化为红色:
JNI_FN(MuPDFCore_addInkAnnotationInternal)(JNIEnv * env, jobject thiz, jobjectArray arcs)
{
color[0] = 1.0;
color[1] = 0.0;
color[2] = 0.0;
color[3] = 0.0;
如果你只是想将它硬连接到黑色,则将1.0更改为0.0。
2.MUPDF编译SO包详细步骤,针对墨迹默认红色更改成黑色处理 参考大神的介绍:【mupdf笔记02】MUPDF编译SO包详细步骤,针对墨迹默认红色更改成黑色处理_掘金者说的博客-CSDN博客
1、工具及使用环境:
Win10_64位 8G内存 1T硬盘
文件mupdf-1.9a-source
软件Cygwin(安装:点击打开链接)
2.make generate
打开Cygwin,cd进入到我们指定根目录下如上图,进行执行make generate命令,会自动生成上图的generated文件夹
3.修改文件配置
进入platform\android\viewer目录下,打开local.properties.sample配置Android SDK和NDK的路径,文件改名为local.properties。
打开mupdf.c找到如下:
#define JNI_FN(A) Java_com_artifex_mupdfdemo_ ## A
#define PACKAGENAME “ com/artifex/mupdfdemo”
修改成我们的MUPDF所在的包名。
打开Application.mk选择我们需要打包的平台。
4.ndk-build
windows启动cmd,cd到如下图位置(提前配置ndk环境变量)
打开cmd,进入Viewer目录(不是JNI目录也不是上一级,切记),执行ndk-build ,静等几分钟,大功告成。
4.实操展示
5.下载
demo下载:https://download.csdn.net/download/fhlxyzczq205301/15926664
Demo中是默认红色墨迹,需要黑色墨迹的童鞋自行下载,下载地址:
libmupdf_java.so-1.9a-适用于mips架构:https://download.csdn.net/download/fhlxyzczq205301/15894027
libmupdf_java.so-1.9a-适用于x86架构:https://download.csdn.net/download/fhlxyzczq205301/15893897
libmupdf_java.so-1.9a-适用于armeabi-v7a架构:https://download.csdn.net/download/fhlxyzczq205301/15893841
libmupdf_java.so-1.9a-适用于armeabi架构:https://download.csdn.net/download/fhlxyzczq205301/15893789
libmupdf_java.so-1.9a-适用于arm64-v8a架构:https://download.csdn.net/download/fhlxyzczq205301/15893698