用mupdf得到pdf文件中的目录
难免会用到pdf,但是又记不住pdf的内容,只能想办法搜索pdf目录并显示指定页面了
以下的代码为cpp代码
void get_outline(fz_outline *outline, int level,fz_context* ctx,std::vector<Toc> & vec)
{
int i;
auto out = fz_stdout(ctx);
while (outline)
{
Toc toc(outline->title,outline->uri,outline->page.page,level);
vec.push_back(toc);
if (outline->down)
get_outline(outline->down, level + 1,ctx,vec);
outline = outline->next;
}
}
std::vector<Toc> PdfUtil::getPdfToc(const char * filename){
std::vector<Toc> vec;
fz_context * ctx = nullptr;
ctx = fz_new_context(NULL, NULL, FZ_STORE_DEFAULT);
if(!ctx){
std::cout<<" create context error"<<std::endl;
return vec;
}
fz_try(ctx){
pdf_document* doc = pdf_open_document(ctx, filename);
if(doc == nullptr){
std::cout<<"document is null"<<std::endl;
}else{
fz_outline *outline = fz_load_outline(ctx, (fz_document*)doc);
fz_try(ctx)
get_outline(outline, 1,ctx,vec);
fz_always(ctx)
fz_drop_outline(ctx, outline);
fz_catch(ctx)
fz_rethrow(ctx);
return vec;
}
}
fz_catch(ctx)
{
return vec;
}
return vec;
}
推荐文章: