Android集成MuPDF,修改批注默认红色墨迹为黑色墨迹
概述
前段时间由于项目需要,要在手机上对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简介
官网地址:https://www.mupdf.com/
官网都是英文,如果英文不好看起来确实很费劲(本人就是)O(∩_∩)O哈哈~
android集成快捷路径:https://www.mupdf.com/docs/android-sdk.html(英文不好的童鞋,直接去这里看如何集成吧)
源码下载地址:https://mupdf.com/downloads/archive/
3.MuPDF手写墨迹,默认保存的墨迹是红色的,怎么修改颜色?如何更改mupdf的颜色绘图?
1.参考大神的介绍:https://blog.csdn.net/u010638673/article/details/80575957
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包详细步骤,针对墨迹默认红色更改成黑色处理 参考大神的介绍:https://blog.csdn.net/u010638673/article/details/80577631
1、工具及使用环境:
Win10_64位 8G内存 1T硬盘
文件mupdf-1.9a-source
软件Cygwin(安装:点击打开链接)
2.make generate
Win+R 输入 Cmd 进入到我们制定根目录进行执行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
打开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
Android集成MuPDF,修改批注默认红色墨迹为黑色墨迹相关推荐
- Android 12.0 修改系统默认字体的大小
目录 1.概述 2.修改系统默认字体的大小的核心类 3.修改系统默认字体的大小的核心功能实现和分析
- Android 12.0修改系统默认设备类型的平板电脑类型为设备类型
1.概述 在12.0的系统rom产品开发中,对于产品设备类型都默认为tablet即平板电脑类型,即 product="tablet" 在一些不是平板的项目中,可能需要修改这个类型为 ...
- Android 11.0 修改系统默认设备类型的平板电脑类型为设备类型
目录 1.概述 2.修改系统默认产品设备类型相关代码 3.修改系统默认产品设备类型相关代码的分析
- android 开发板修改开机默认桌面
需要root权限 文件路径/data/system/packages.xml 里边的preferred-activities属性! 把自己需要的桌面应用设置上Attribute android.int ...
- android sdk 混淆 修改,Android-SDK默认混淆配置ProGuard
一.介绍 通常情况下编译后的字节码包含了大量调试信息(如源类名/行号等) 混淆代码就能删除这些调试信息,并用无意义字符替换所有名字,增加反编译难度! ProGuard是一个混淆Java代码的开源项目, ...
- Android 5.1 修改系统默认语言
折腾了下下这个很2的问题. 网上放的方法比较旧, Android5.1的话, 设置后当时生效, 重启后就失效了. private void updateLanguage(Locale locale) ...
- Android 修改系统默认输入法
原文出处:http://www.ccbu.cc/framework/modify-default-inputmethod.html 1. 修改系统默认输入法 Android系统的默认输入法在很多情况下 ...
- Android修改系统默认设置
1.launcher的布局太居中,要想两边拉伸 <\packages\apps\Launcher2\res\values\dimens.xml> <dimen name=&qu ...
- Android UI 统一修改Button控件的样式,以及其它系统控件的默认样式
先介绍下修改原理:首先打开位于android.widget包下面的Button.java文件,这里有一句关键的代码如下: public Button(Context context, Attribut ...
最新文章
- 洛谷 P2596 [ZJOI2006]书架 (splay)
- wxif 判断字符串相等_ES6:字符串、数组、对象的扩展
- NUMA架构的CPU -- 你真的用好了么?
- Supervised Convolutional Neural Network
- 关联的两个字段度需要建立索引吗_索引那些事儿
- Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
- react-native 异常处理 Execution failed for task ':app:mergeDebugResources'.
- 查询SQLServer的启动时间
- db powerdesigner设计mysql数据库表
- dbutilsjar包下载_commons dbutils 下载-commons dbutils.jar下载 v1.6官方版--pc6下载站
- npcap关闭_npcap是什么软件
- 数据结构——二叉树先序、中序、后序及层次四种遍历(C语言版)
- CF 1056D Decorate Apple Tree
- [ROS] KDL + DH 参数 + 正解
- 安卓手机分辨率修改工具的使用方法
- 跨境电商未来将合规化发展——扬帆牧哲
- 大数据平台数据管控整体解决方案(48页PPT附下载)
- echart自定义动画_ECharts使用—折线图动态加载
- 【操作系统与安全】考点总结
- 将电脑本地视频转成rtsp和rtmp视频流
热门文章
- opencv随笔记录:2.anaconda+windows系统下实现视频目标识别yolov3
- 计算 n! 中末尾0的个数 求n!中p的重数
- 网络安全从业人员职业发展和规划
- selenium 运行 IE11 需要进行的浏览器设置
- 计算机视觉与图形图像会议、学派的一点八卦和资料
- python调试工具_您需要在2020年了解的所有python调试工具
- Java 枚举(enum) 六种常用的方法详解
- agilent VISA项目开发小记
- vue搭配echarts做地图散点效果以及飞机迁徙图
- 更改python保存路径_更的解释|更的意思|汉典“更”字的基本解释