【问题标题】:How to get PDF meta data using MUPDF如何使用 MUPDF 获取 PDF 元数据
【发布时间】:2015-06-02 11:27:25
【问题描述】:

如何在 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));

有人可以帮忙吗?

【问题讨论】:

    标签: android pdf mupdf


    【解决方案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() 来获取它。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-08
        • 2012-07-08
        • 1970-01-01
        • 2014-05-09
        • 2016-08-06
        • 2018-02-24
        相关资源
        最近更新 更多