簡體   English   中英

向MuPDF android添加注釋

[英]Adding annotation to MuPDF android

我已經使用MuPDF lib實現了pdf。我在谷歌搜索了一下之后,試圖繪制pdf,發現MuPDFCore.addInkAnnotation(int page, PointF[][] arcs)會將Ink注釋添加到pdf中。 當我調用addInkAnnotation方法時,它崩潰了。 這是我的示例代碼,試圖通過它查看Pdf上的注釋,但運氣不好。

PointF[][] p=new PointF[1][1];
PointF [] points=new PointF[2];
points[0]=new PointF(200, 200);
points[1]=new PointF(200, 200);

PointF [] points2=new PointF[2];
points2[0]=new PointF(200, 200);
points2[1]=new PointF(200, 200);

core.addInkAnnotation(2, p);

其中core是MuPDFCore對象。

錯誤日志。

02-17 20:22:24.610: W/dalvikvm(25082): JNI WARNING: illegal class name 'android.graphics.PointF' (FindClass)
02-17 20:22:24.610: W/dalvikvm(25082):              (should be formed like 'dalvik/system/DexFile')
02-17 20:22:24.610: W/dalvikvm(25082):              or '[Ldalvik/system/DexFile;' or '[[B')
02-17 20:22:24.610: I/dalvikvm(25082): "main" prio=5 tid=1 NATIVE
02-17 20:22:24.610: I/dalvikvm(25082):   | group="main" sCount=0 dsCount=0 obj=0x411af508 self=0x41194208
02-17 20:22:24.610: I/dalvikvm(25082):   | sysTid=25082 nice=0 sched=0/0 cgrp=apps handle=1075171120
02-17 20:22:24.610: I/dalvikvm(25082):   | schedstat=( 2908935486 1958496146 7720 ) utm=232 stm=57 core=1
02-17 20:22:24.626: I/dalvikvm(25082):   #00  pc 00001260  /system/lib/libcorkscrew.so (unwind_backtrace_thread+27)
02-17 20:22:24.626: I/dalvikvm(25082):   #01  pc 0005f944  /system/lib/libdvm.so (dvmDumpNativeStack(DebugOutputTarget const*, int)+35)
02-17 20:22:24.626: I/dalvikvm(25082):   #02  pc 000537ec  /system/lib/libdvm.so (dvmDumpThreadEx(DebugOutputTarget const*, Thread*, bool)+303)
02-17 20:22:24.626: I/dalvikvm(25082):   #03  pc 00053886  /system/lib/libdvm.so (dvmDumpThread(Thread*, bool)+25)
02-17 20:22:24.626: I/dalvikvm(25082):   #04  pc 00038e42  /system/lib/libdvm.so
02-17 20:22:24.626: I/dalvikvm(25082):   #05  pc 00041b3e  /system/lib/libdvm.so
02-17 20:22:24.626: I/dalvikvm(25082):   #06  pc 000252f4  /data/data/com.example.pdf/lib/libmupdf.so (Java_com_artifex_mupdfdemo_MuPDFCore_addInkAnnotationInternal+355)
02-17 20:22:24.626: I/dalvikvm(25082):   #07  pc 0001deb0  /system/lib/libdvm.so (dvmPlatformInvoke+112)
02-17 20:22:24.626: I/dalvikvm(25082):   #08  pc 0004d102  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+393)
02-17 20:22:24.626: I/dalvikvm(25082):   #09  pc 0004f21c  /system/lib/libdvm.so (dvmResolveNativeMethod(unsigned int const*, JValue*, Method const*, Thread*)+171)
02-17 20:22:24.626: I/dalvikvm(25082):   #10  pc 000272e0  /system/lib/libdvm.so
02-17 20:22:24.626: I/dalvikvm(25082):   #11  pc 0002bbe8  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)
02-17 20:22:24.626: I/dalvikvm(25082):   #12  pc 0005fb36  /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+373)
02-17 20:22:24.626: I/dalvikvm(25082):   #13  pc 000670e4  /system/lib/libdvm.so
02-17 20:22:24.626: I/dalvikvm(25082):   #14  pc 000272e0  /system/lib/libdvm.so
02-17 20:22:24.626: I/dalvikvm(25082):   #15  pc 0002bbe8  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)
02-17 20:22:24.626: I/dalvikvm(25082):   #16  pc 0005f870  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+271)
02-17 20:22:24.626: I/dalvikvm(25082):   #17  pc 000496f2  /system/lib/libdvm.so
02-17 20:22:24.626: I/dalvikvm(25082):   #18  pc 0004857e  /system/lib/libandroid_runtime.so
02-17 20:22:24.626: I/dalvikvm(25082):   #19  pc 00049696  /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+389)
02-17 20:22:24.626: I/dalvikvm(25082):   #20  pc 00000dce  /system/bin/app_process
02-17 20:22:24.626: I/dalvikvm(25082):   #21  pc 00017040  /system/lib/libc.so (__libc_init+35)
02-17 20:22:24.626: I/dalvikvm(25082):   at com.artifex.mupdfdemo.MuPDFCore.addInkAnnotationInternal(Native Method)
02-17 20:22:24.626: I/dalvikvm(25082):   at com.artifex.mupdfdemo.MuPDFCore.addInkAnnotation(MuPDFCore.java:296)

我認為應該是:

PointF[][] p=new PointF[2][];
PointF [] points=new PointF[2];
points[0]=new PointF(200, 200);
points[1]=new PointF(200, 200);

PointF [] points2=new PointF[2];
points2[0]=new PointF(200, 200);
points2[1]=new PointF(200, 200);

p[0] = points;
p[1] = points2;

core.addInkAnnotation(0, p);

第一個新字符串應僅指定外部數組的長度,而不是內部數組的長度-且其長度應為2,請參見要指定2個圓弧。

您忽略了將外部數組元素設置為內部數組。

addInkAnnotation的第一個參數是頁碼,因此0可能是您想要測試的。

根據您對庫執行其他調用的方式,您可能需要通過AsyncTask進行addInkAnnotation調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM