用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;
}
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!