← 所有文章

PDF 檔案結構解析

2026 年 3 月 · 閱讀時間約 6 分鐘

PDF(Portable Document Format,可攜式文件格式)自 1993 年由 Adobe 推出以來,已經成為全球最通用的文件交換格式。但你有沒有想過,PDF 內部到底長什麼樣?為什麼它能在不同作業系統、不同裝置上呈現完全一致的排版?

PDF 的誕生與演進

PDF 最初由 Adobe 共同創辦人 John Warnock 提出,目標是建立一種「紙上即所見」的數位文件格式。2008 年,PDF 1.7 被 ISO 組織正式採納為國際標準 ISO 32000-1,不再是 Adobe 的專屬格式。2017 年發布的 PDF 2.0(ISO 32000-2)更進一步擴充了功能。

PDF 檔案的四大結構

每個 PDF 檔案都由四個主要部分組成:

1. Header(檔頭)

PDF 檔案的第一行標示了 PDF 版本號,例如 %PDF-1.7。這告訴閱讀器該使用哪個版本的規格來解析這個檔案。

2. Body(主體)

主體包含了文件的所有內容物件,包括文字、圖片、字型、顏色等。每個物件都有一個唯一的識別號碼(Object Number)和版本號(Generation Number)。

3. Cross-Reference Table(交叉參考表)

交叉參考表記錄了每個物件在檔案中的確切位元組位置。這讓 PDF 閱讀器能夠隨機存取任何物件,而不需要從頭讀到尾。這也是 PDF 可以快速跳到第 100 頁的原因。

4. Trailer(檔尾)

檔尾指向交叉參考表的位置,並包含根物件(Catalog)的參考。PDF 閱讀器會從檔案尾端開始讀取,先找到 Trailer,再透過交叉參考表定位所有物件。

重點摘要:PDF 的結構設計讓閱讀器可以從檔案尾端開始解析,透過交叉參考表快速定位任何物件。這就是為什麼 PDF 可以高效地顯示大型文件的任何一頁。

PDF 物件類型

PDF 內部使用 8 種基本物件類型來描述文件內容:

物件類型說明範例
Boolean布林值true, false
Numeric數字(整數或浮點數)42, 3.14
String文字字串(Hello World)
Name命名符號/Type, /Page
Array有序集合[1 2 3]
Dictionary鍵值對集合<< /Type /Page >>
Stream二進位資料流用於圖片、字型等大型資料
Null空值null

頁面樹(Page Tree)

PDF 使用樹狀結構來組織頁面。根節點是 Catalog 物件,它指向 Pages 物件(頁面樹的根),Pages 再指向各個 Page 物件。這種結構讓 PDF 閱讀器能高效地管理數千頁的文件。

每個 Page 物件包含:

Content Stream(內容流)

頁面的實際內容(文字、圖形、圖片)透過「內容流」來描述。內容流使用一套專門的 PDF 運算子,類似於 PostScript 語言。例如:

為什麼理解 PDF 結構很重要?

了解 PDF 的內部結構有助於:

立即使用 PDF 轉 JPG 工具 →

結語

PDF 看似簡單的一個檔案格式,內部其實蘊含了精巧的結構設計。從物件系統到交叉參考表,從頁面樹到內容流,每個部分都為了實現「跨平台一致呈現」這個核心目標而設計。下次當你使用 PDF 時,不妨多想想這些背後的技術。

參考文獻

  1. Adobe Systems Incorporated. "PDF Reference, Sixth Edition: Adobe Portable Document Format Version 1.7." Adobe, 2006. https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf
  2. ISO. "ISO 32000-1:2008 — Document management — Portable document format — Part 1: PDF 1.7." International Organization for Standardization, 2008. https://www.iso.org/standard/51502.html
  3. PDF Association. "PDF Specification Index." PDF Association, 2024. https://www.pdfa.org/resource/pdf-specification-index/
  4. ISO. "ISO 32000-2:2020 — Document management — Portable document format — Part 2: PDF 2.0." International Organization for Standardization, 2020. https://www.iso.org/standard/75839.html