Android 如何使用MuPDF从pdf中提取嵌入文件
iOS上的我的应用程序从PDF中提取嵌入文件。现在,我试着让Android应用程序使用相同的功能 在iOS上,我可以使用Quartz2d提取嵌入文件:Android 如何使用MuPDF从pdf中提取嵌入文件,android,pdf,mupdf,Android,Pdf,Mupdf,iOS上的我的应用程序从PDF中提取嵌入文件。现在,我试着让Android应用程序使用相同的功能 在iOS上,我可以使用Quartz2d提取嵌入文件: 访问根PDF字典(CGPDFDocumentGetCatalog) 获取文件数组(名称>嵌入的文件>名称)并通过它进行初始化 将文件流内容从文件字典(EF>F)复制到NSData并保存它 使用MuPDF有什么方法可以做到这一点吗?基于pdfextact.c的解决方案看起来像是bruteforce,但它可以工作: 通过所有pdf对象(pdf\u加载
CGPDFDocumentGetCatalog
)NSData
并保存它使用MuPDF有什么方法可以做到这一点吗?基于pdfextact.c的解决方案看起来像是bruteforce,但它可以工作:
pdf\u加载\u对象
)isembed
)saveembed
)static int isembed(pdf_obj *obj) {
pdf_obj *type = pdf_dict_gets(obj, "Type");
return pdf_is_name(type) && !strcmp(pdf_to_name(type), "Filespec");
}
static void saveembed(pdf_obj *dict) {
char *filename;
pdf_obj *obj = pdf_dict_gets(dict, "F");
if (obj) filename = pdf_to_str_buf(obj);
obj = pdf_dict_gets(dict, "EF");
if (!obj) return;
pdf_obj *stream = pdf_dict_gets(obj, "F");
if (!stream) return;
FILE *f;
fz_buffer *buf;
int n, len;
unsigned char *data;
buf = pdf_load_stream(doc, pdf_to_num(stream), pdf_to_gen(stream));
printf("extracting embedded file %s\n", filename);
f = fopen(filename, "wb");
len = fz_buffer_storage(ctx, buf, &data);
n = fwrite(data, 1, len, f);
fclose(f);
fz_drop_buffer(ctx, buf);
}
哪个库用于在PDF批注中添加嵌入文件请帮助我