Android集成MuPDF,修改批注默认红色墨迹为黑色墨迹

  • Post author:
  • Post category:其他


概述

前段时间由于项目需要,要在手机上对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



版权声明:本文为fhlxyzczq205301原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。