如何使用 MUPDF 获取 PDF 元数据

How to get PDF meta data using 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));

有人可以帮忙吗?

您可以使用 mupdf library.This 函数轻松完成此操作 returns 一个字符串数组,其中包含元数据信息,分别对应键数组中的键。如果一个键没有这样的信息,它 returns 一个空字符串

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;
}
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()得到这个。