PDFium-PDF开源之旅(2)——运行调试pdfium自带的测试程序

来源:互联网 发布:sql select 不同 编辑:程序博客网 时间:2024/06/01 07:30

PDFium-PDF开源之旅(2)

——运行调试PDFium自带的测试程序

趁热打铁周末,总算有时间继续啦。废话少说,切入正题.

编译运行pdfium_test.exe

下载代码之后,原想直接写个Demo,认真看了工程,PDFium是有自带一个测试程序的,叫pdfium_test.如图:

编译这个工程,运行,调试,就可以一睹PDFium真面目了。运行Demo提示命令行参数格式:

 

来个最简单的,放了一个PDF文件到如下目录: ”E:\project\code\openpdf\test.pdf“

输入参数如下:

pdfium_test.exe ”E:\project\code\openpdf\test.pdf“

输出如下图:

 

看起来这个测试程序,没有输出界面,只是把PDF的解析,显示跑了一遍。不过这个足以让你很容易的入手,探探PDF解析的真面目,弄个断点一步一步调试,跑一遍,基本就了解啦。(这个后面有时间我再另外写文章吧)

如何使用pdfium

通过调试pdfium_test.cc可以让你很清晰的知道,如何使用pdfium的库的使用了。

这里我简单说下调用的步骤:

首先就是库的初始化:

FPDF_InitLibrary(NULL);

 

接下来就是设置一个handle用于获取PDF 文件中是否包含pdfium不支持的对象的信息。

FSDK_SetUnSpObjProcessHandler(&unsuppored_info);

 

然后就开始对PDF进行操作了:具体看 RenderPdf()这个函数,这里实现的功能我罗列下:

1. 加载文档 异步/非异步方式加载文档 :LoadCustomDocument

2. 填表功能 FPDFDOC_InitFormFillEnviroument

3. 页面加载 FPDF_LoadPage

4. 文本加载 FPDFText_LoadPage

5. 页面渲染FPDF_RenderPageBitmap,表单渲染:FPDF_FFLDraw

 一句句解释太累,直接去看代码吧。

 

接下来就是各种handle释放:

  FPDFBitmap_Destroy(bitmap);

 

    FORM_DoPageAAction(page, form,FPDFPAGE_AACTION_CLOSE);

    FORM_OnBeforeClosePage(page, form);

    FPDFText_ClosePage(text_page);

    FPDF_ClosePage(page);

  }

 

  FORM_DoDocumentAAction(form,FPDFDOC_AACTION_WC);

  FPDFDOC_ExitFormFillEnviroument(form);

  FPDF_CloseDocument(doc);

  FPDFAvail_Destroy(pdf_avail);

 

 

最后就是库的释放:

FPDF_DestroyLibrary();

 

好了,就到这里吧,pdfium_test还是比较简单的,看代码基本就一目了然了。下一篇打算自己写一个Demo跑跑pdfium.


原创作品,转载请注明出处。

0 0
原创粉丝点击