How to get PDF meta data using MUPDF

How to get pdf meta-data using MuPdf in Android ? I'm using MuPdf V1.7.

I can get Author & PDF name but I cannot get creation date, creator and etc. I used below function to get information:

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));

Can anybody help?

Upvotes: 1

Views: 1115

Answers (2)

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"

paste the below code into 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);
}

then we can able to get this by core.metaPublishDate().

Upvotes: 2

Hitesh Singh
Hitesh Singh

Reputation: 2005

you can easily do this with mupdf library.This function returns a string array which contains metadata information, respectively to keys in keys array. If there is no such info for a key, it returns an empty string

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;
}

Upvotes: 1

Related Questions