如何使用MUPDF获取PDF元数据

时间:2015-06-02 11:27:25

标签: android pdf mupdf

如何在Android中使用MuPdf获取pdf元数据?我使用的是MuPdf V1.7。

我可以得到作者& PDF名称,但我无法获得创建日期,创建者等。我使用下面的函数来获取信息:

fz_lookup_metadata(ctx, glo->doc, FZ_META_INFO_TITLE, info, sizeof(info));
fz_lookup_metadata(ctx, glo->doc, FZ_META_INFO_AUTHOR, info, sizeof(info));

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

hi all i can get creation date from pdf by the below code.

add this into document.h
#define FZ_META_INFO_CREATIONDATE "info:CreationDate"

将以下代码粘贴到mupdf.c

JNIEXPORT jstring
JNICALL JNI_FN(MuPDFCore_metaPublishDate)(JNIEnv * env, jobject thiz)
{
    char info[64];
     globals *glo = get_globals(env, thiz);
     fz_context *ctx = glo->ctx;
     pdf_document *idoc = pdf_specifics(ctx, glo->doc);

     fz_lookup_metadata(ctx, glo->doc, FZ_META_INFO_CREATIONDATE, info, sizeof(info));

     return (*env)->NewStringUTF(env, info);
}

然后我们可以通过core.metaPublishDate()来获得它。

答案 1 :(得分:0)

您可以使用mupdf库轻松完成此操作。此函数返回一个字符串数组,该数组包含元数据信息,分别包含在keys数组中的键。如果没有密钥的此类信息,则返回空字符串

JNIEXPORT jobjectArray JNICALL
JNI_FN(MuPDFCore_metadataInternal)(JNIEnv * env, jobject thiz)
{
 char info[64];
 globals *glo = get_globals(env, thiz);
 jobjectArray arr;
 jclass stringClass;
 const int nkeys = 4;
 const char *keys[nkeys];
 int i;
 keys[0] = "Title";
 keys[1] = "Author";
 keys[2] = "Subject";
 keys[3] = "Keywords";

 stringClass = (*env)->FindClass(env, "java/lang/String");
 arr = (*env)->NewObjectArray(env, nkeys, stringClass, NULL);


 LOGI("Getting metadata");
 for(i=0; idoc, FZ_META_INFO, info, sizeof(info));

  LOGI("%s : %s", keys[i], info);
  jstring s = (*env)->NewStringUTF(env, info);
  if (s != NULL) {
   (*env)->SetObjectArrayElement(env, arr, i, s);
  }
  (*env)->DeleteLocalRef(env, s);
 }

 return arr;
}