【mupdf笔记01】MuPDF手写墨迹,默认保存的墨迹是红色的,怎么修改颜色?如何更改mupdf的颜色绘图?

目前,本人在公司研究一个项目,就是根据在MuPDF上面进行批注的功能,源码中的墨迹(Ink)。在Android中实现针对pdf文件进行功能【文件浏览、颜色变换、笔记粗细等等】功能。但是,我也遇到了和码友所诉的问题:点击打开链接

MuPDF 手写功能的时候,画笔颜色可以自己定义,不管把颜色定义成什么,当调用MuPDFCore.save时,保存笔记,笔记的颜色显示默认红色的,也有大神把mupdf源码分析了一遍,默认颜色就是红色,不知道怎么改?

坑了我好几天时间,现在我来讲些,顺便做个笔记。

两种方案:
第一种,直接修改mupdf里面的color数组,然后编译mupdf so包
第二种,修改方法,添加color参数,然后编译mupdf so包
两种方式,均需要编译mupdf库。

说是这么说,但是改哪里,那个文件呢?我找了大半天......

签名时候可以任意颜色可以设置,但是保存时候就是红色。发现源代码C语言中定性的为红色。MuPDF1.10 点击打开链接

查看源代码mupdf-1.10-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。然后,签字的文件上传到服务端准备打印,你会发现打印的时候打印不出批注(签字信息)信息。

如果希望生成的Ink注释显示在PDF的打印版本中,然后在pdf-annot.c【我在pdf-annot-edit.c】文件中的pdf_create_annot函数中中,则应添加以下行:
pdf_dict_puts_drop(annot_obj, "F", pdf_new_int(doc, F_Print));
行后:
pdf_dict_puts_drop(annot_obj, "Rect", pdf_new_rect(doc, &rect));

我刚刚重新编译这个,出现问题待处理:

[armeabi-v7a] Compile thumb  : mupdfcore <= writer.c
[armeabi-v7a] Compile thumb  : mupdfcore <= xml.c
[armeabi-v7a] Compile thumb  : mupdfcore <= zip.c
[armeabi-v7a] Compile thumb  : mupdfcore <= pdf-annot-edit.c
jni/../../../../source/pdf/pdf-annot-edit.c:98:55: error: use of undeclared identifier 'F_Print'
                pdf_dict_puts_drop(annot_obj, "F", pdf_new_int(doc, F_Print));
                                                                    ^
jni/../../../../source/pdf/pdf-annot-edit.c:99:64: error: too few arguments to function call, expected 3, have 2
                pdf_dict_puts_drop(annot_obj, "Rect", pdf_new_rect(doc, &rect));
                                                      ~~~~~~~~~~~~           ^
../../../include\mupdf/pdf/object.h:24:1: note: 'pdf_new_rect' declared here
pdf_obj *pdf_new_rect(fz_context *ctx, pdf_document *doc, const fz_rect *rect);
^
2 errors generated.
make: *** [obj/local/armeabi-v7a/objs/mupdfcore/__/__/__/__/source/pdf/pdf-annot-edit.o] Error 1

D:\mupdf-1.10-source\platform\android\viewer>

【mupdf笔记02】MUPDF编译SO包详细步骤,针对墨迹默认红色更改成黑色处理


猜你喜欢

转载自blog.csdn.net/u010638673/article/details/80575957