PDF檔案格式的一些研究心得 zz

2021-06-10 01:20:57 字數 1464 閱讀 8568

trailer

<<

/size 211

/root 2 0 r

/info 1 0 r

/id

>>

其中0,211分別代表這個xref的obj的起始和終止序號。其中0這個是估計是為了程式中好處理所以加了這個(個人英文水平不行,有些地方看不明白),可以不加入這個。下面的各行就代表各個obj在這個文件的起始位置,其中第一串字元(10個)代表起始位置,中間的五個字元也是為了區分用的,現在基本上全為0,後面的字母有兩種f代表刪除的,n代表要使用的。後面的trailer是對整個xref的摘要,說明裡面有多少個obj,讀的時候從哪個obj開始解析,資訊節點等,id是為了讓一些檔案檢索工具能夠唯一區分檔案。

3、檔案尾。

startxref

88019

%%eof

因為乙個文件中可以有多個xref,所以這裡要指明要從哪個xref開始進行解析這個檔案。

從上面的分析來看:pdf檔案內部校驗是很複雜的,只要裡面有一位錯位了,就會導致整個文件讀取錯誤。而且它時碩會有不少的二進位制內容,所以一般來說在記憶體裡面儲存的時候,用流物件,而不能用字串,特別是生成的時候,每加入乙個obj的時候,去獲取一下當前流的長度就可以得到每個obj的起始位置,同時把獲取的這些位置存到arraylist裡面,這樣就可以很方便地得到和內容相一致的xref了。

三、pdf裡面物件的組成形式,可以說是用樹形結構來相互關聯的,駔下面掛頁集合,頁集合下面掛頁,頁裡掛,鏈結,內容等

四、pdf裡面的obj的型別主要有以下幾種:

1、檔案描述物件,用來描述這個檔案的標題,作者,時間等

2、組物件,也就是文件內容的起始結點。type 為catalog

3、頁集合,裡面聚合了大量的頁物件。  type 為pages

4、頁物件,裡面指明了當前頁裡面用到的字型,內容,活動物件,等。type 為page

5、活動物件,有鏈結,文字,聲音,電影等,type 為annots

6、物件, type 為 xobject

7、字型物件,type 為 font 。pdf可以內建字型,所以即使目標機器上沒有,只要它內建了,也可以正常地顯示,不受影響(內建字型,這個我還沒有研究清楚,希望知道的人可以告訴我一下,這裡先謝了)

8、流物件。所有的二進位制內容都是存在這個物件裡面,檔案流的常見的壓縮方式是:的一些壓縮演算法,flatedecode,asciihexdecode,ascii85decode等等,flatedecode事實上就是zip的壓縮演算法(關這個,我就花了好長的時間去研究)。流物件的長度是關連到乙個長度物件上的/length  188 0 r這種形式。188就是存這個長度的obj的順序號。

9、數字物件。

188 0 obj

2538

endobj

裡面只有乙個數字,經常用來表示長度,為什麼要把長度還要再用物件來表示,這個到現在我也想不太明白。

以上就是我對pdf檔案格式的理解的摘要。也許有些地方可能理解得不正確,希望得到大家的指正。

PE檔案格式的一些研究

最近抽空對pe檔案格式做了一些研究。眾所周知,pe檔案格式是windows平台下可執行檔案的格式。為什麼要研究pe檔案格式?可能有人認為,做這件事就是一件重複造輪子的事,因為之前已經有無數人做過這樣的事。但是有些事不是簡單地以是不是重複造輪子來衡量的。研究pe檔案格式對加深程式本質的認識和理解程式的...

關於顏色格式的一些心得

大自然中的顏色和計算機世界裡的顏色,頗有許多相似之處,甚至可以說計算機世界裡的顏色就是來自大自然的。我記得我的一位師長曾對我說 科學源於生活又低於生活,藝術源於生活而高於生活 現在想起來,似乎真的是這個樣子。大自然中的顏色有多少種呢?不知道唉,可以說是無數種了。不過既然科學源於生活又低於生活,那麼計...

7z檔案格式及其原始碼的分析

本文是乙個系列.主要是分享我最近一年做7z檔案開發的經驗.主要包括7z官方原始碼的結構分析,以及7z檔案格式的分析.其中涉及到7z原始碼結構的各個細節,以及7z檔案格式的具體細節.本文適合物件 想要了解學習7z原始碼的開發人員,想要了解7z檔案格式細節,做7z檔案壓縮器和解壓器的開發人員,以及其他壓...