1. 程式人生 > >專案心得-PDF檔案格式深入瞭解!

專案心得-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  做一個全域性只是進行一下測試.
                
還有就發現真正的軟體開發並不是我們所認為的那幾百行程式碼,當把專案的一個小模組給我的時候,看著那幾十個類,才發現,要想在這麼多程式碼中進行優化,真的需要耐心 毅力,