W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
建議查看 PDF 規(guī)范以獲取詳細(xì)信息和說明。這只是為了對(duì)格式進(jìn)行非常粗略的概述。
PDF 包括:
標(biāo)頭:包含 PDF 的版本,例如%PDF-1.7
主體:包含一系列間接對(duì)象
交叉引用表 (xref):包含正文中間接對(duì)象的列表
預(yù)告片
交叉引用表 (xref) 是正文中間接對(duì)象的表。它允許通過指向它們?cè)谖募械奈恢脕砜焖僭L問這些對(duì)象。
它看起來像這樣:
xref 42 5 0000001000 65535 f 0000001234 00000 n 0000001987 00000 n 0000011987 00000 n 0000031987 00000 n
讓我們逐步了解它:
xref
只是一個(gè)指定外部參照表開始的關(guān)鍵字。
42
是此外部參照部分中第一個(gè)對(duì)象的數(shù)字 ID;5
是外部參照表中的條目數(shù)。
現(xiàn)在每個(gè)對(duì)象都有 3 個(gè)條目:10 位字節(jié)偏移量、5 位生成編號(hào)和一個(gè)or 的文字關(guān)鍵字。nnnnnnnnnn ggggg n
n
f
nnnnnnnnnn
是對(duì)象的字節(jié)偏移量。它告訴讀者對(duì)象在文件中的位置。
ggggg
是代號(hào)。它告訴讀者對(duì)象的年齡。
n
表示該對(duì)象是一個(gè)正常使用中的對(duì)象,f
表示該對(duì)象是一個(gè)自由對(duì)象。
第一個(gè)空閑對(duì)象的世代號(hào)始終為 65535。它構(gòu)成了所有空閑對(duì)象的鏈表的頭部。
普通對(duì)象的世代號(hào)始終為 0。世代號(hào)允許 PDF 格式包含同一對(duì)象的多個(gè)版本。這是一個(gè)版本歷史機(jī)制。
主體是一系列間接對(duì)象:
counter generationnumber << the_object >> endobj
counter
(整數(shù))是對(duì)象的唯一標(biāo)識(shí)符。
generationnumber
(整數(shù))是對(duì)象的代號(hào)。
the_object
是對(duì)象本身。它可以是空的。/Keyword
以指定它是哪種對(duì)象開始。
endobj
標(biāo)記對(duì)象的結(jié)束。
可以在以下位置找到一個(gè)具體示例test_reader.py::test_get_images_raw
:
1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj 2 0 obj << >> endobj 3 0 obj << >> endobj 4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0] /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R /Resources << /Font << >> >> /Rotate 0 /Type /Page >> endobj 5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj
預(yù)告片看起來像這樣:
trailer << /Root 5 0 R /Size 6 >> startxref 1234 %%EOF
讓我們來看看它:
trailer <<
表示尾部詞典開始。它以 . 結(jié)尾>>
。
startxref
是一個(gè)關(guān)鍵字,后跟關(guān)鍵字的字節(jié)位置xref
。由于預(yù)告片始終位于文件底部,因此讀者可以快速找到外部參照表。
%%EOF
是文件結(jié)束標(biāo)記。
trailer 字典是一個(gè)鍵值列表。鍵在 PDF 參考 1.7 的表 3.13 中指定,例如/Root
和/Size
(兩者都是必需的)。
/Root
(字典)包含文檔目錄。
The5
是目錄字典的對(duì)象編號(hào)
0
是目錄字典的世代號(hào)
R
是指示該對(duì)象是對(duì)目錄字典的引用的關(guān)鍵字。
/Size
(整數(shù))包含文件外部參照表中的條目總數(shù)。
大多數(shù) PDF 文件都是壓縮的。如果你想閱讀它們,首先解壓它們:
pdftk crazyones.pdf output crazyones-uncomp.pdf uncompress
然后重命名crazyones-uncomp.pdf
為crazyones-uncomp.txt
并在我們最喜歡的 IDE / 文本編輯器中打開它。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: