如何使用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
答案 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是经常使用的有用功能