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.
原創作品,轉載請註明出處。