如何使用mupdf获取pdf文档的作者

时间:2014-11-17 13:57:40

标签: pdf mupdf

如何使用mupdf库获取pdf文档的元数据(例如标题,作者,创建日期等)?没有足够的文档来查找此功能。评论也不够。最有可能的是,有一个功能用于此目的,但在这些情况下很难找到。以下代码是我目前所拥有的。

char info[64];
globals *glo = get_globals(env, thiz);

fz_meta(glo->doc, FZ_META_INFO, info, sizeof(info));

我使用了FZ_META_INFO标记,但它不起作用。我没有得到任何信息,只是空的。我已经检查过它有元数据。任何帮助表示赞赏。

编辑:

目标Android sdk:20

Min Android sdk:15

Mupdf版本:1.6

ndk:r10c

开发操作系统:Ubuntu 12.04

2 个答案:

答案 0 :(得分:2)

在什么意义上'不起作用' ?引发错误?崩溃?您确定您使用的PDF文件是否有任何信息'元数据?

MuPDF的版本是什么?你在用什么平台?

你需要在调用fz_mets 之前在你传递给fz_meta 的缓冲区中设置相关的密钥,我注意到你没有这样做。

在第487行附近看到win_main.c,在你通过宏后,这将解析为

char info[256]

sprintf(info, "Title");
fz_meta(doc, FZ_META_INFO, info, 256);

返回'信息'将包含与词典中的Title键相关联的元数据。

如有疑问,请构建示例应用并在调试器中关注它......

答案 1 :(得分:0)

如果正确的铸造允许发送密钥, 这个演员不正确接收一个字符*。

为例; 正确投射以发送请求

char buff[2048];
strcpy(buff,"CreationDate")
if (fz_meta(ctx,doc,FZ_META_INFO,&buff,2048)) {
    buff[0] = 0;
}

威尔: 找到问题的关键, 转换utf8 然后在复制结果时会崩溃

正确投射以接收请求

char buff[2048];
strcpy(buff,"CreationDate")
if (fz_meta(ctx,doc,FZ_META_INFO,buff,2048)) {
    buff[0] = 0;
}

在dict扫描期间会崩溃。 看起来真的像个臭虫! 我确认修改原始来源

info = pdf_dict_gets(ctx, info, (char *)ptr);

是要走的路。 (即使在编写代码时没有其他人发现它也很奇怪,因为Meta是经常使用的有用功能