專案心得-PDF檔案格式深入瞭解!
工作一個星期了,今天的專案終於算是告一個段落了,雖然是2個高手而不是自己的力量完成的, 但卻學到了很多東西,首先是PDF檔案格式.讀了一天的PDF檔案說明書,全是英文,看的眼睛都花了,上網查卻沒有查到什麼太多的東西,全是一些轉載,重複那幾篇看了無數遍的的PDF說明.
於是還是決定自己來看一看,真正的把它弄明白,簡單的說一下我所學到的東西.
PDF檔案有幾種型別的物件,BOOL 整型 實數型 OBJ DICTIONARY STREAM NULL
他們構成了PDF檔案
還是舉例說明一下.
因為PDF檔案用記事本開啟很大,所以把檔案的主要部分說一下
一個PDF檔案首先是一個頭,代表著版本號. %PDF-1.4
跟著就是各個物件
然後是交叉索引表,用來讀取各個物件用的,他們能知道各個物件的確切位置.
最後就是trailer 它告訴我們檔案的主要根是在哪個物件上,告訴我們交叉索引表的具體位置,這樣就能根據交叉索引表找到ROOT 物件,那個物件告訴我們了PAGES OUTLINE等位置,我們跟著找每一個PAGES 直到找到PAGE.
例如我們根據trailer找到ROOT
43 0 obj
<</Metadata 103 0 R /AcroForm 99 0 R /Pages 39 0 R /Type /Catalog >>endobj
在到39 0 遍歷PAGES
今天的專案PROFILE後卻一直都沒有找到問題的所在,後來通過高手的跟蹤和感覺發現了問題.
一個類從VECTOR繼承,建構函式呼叫了ASSIGN 但那個定義該型別物件的函式卻是對檔案的讀取函式,換句話說就是呼叫的很多的,所以物件的構造和析構多的嚇人,通過定義全域性物件減少了物件的構造,效率提高了一半.雖然全域性物件很另人厭惡,但可以考慮STATIC 做一個全域性只是進行一下測試.
還有就發現真正的軟體開發並不是我們所認為的那幾百行程式碼,當把專案的一個小模組給我的時候,看著那幾十個類,才發現,要想在這麼多程式碼中進行優化,真的需要耐心 毅力,