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.
原创作品,转载请注明出处。