PDF 文件 (.pdf)

ISO 標準

可攜式文件格式(PDF)是一種無處不在的數位紙張標準,旨在呈現一致的文件,且不受應用軟體、硬體與作業系統的限制。

將 PDF 轉換為 JPG

免費的瀏覽器端 PDF 轉 JPG 轉換器。在您的裝置上即時轉換檔案。

線上壓縮 PDF

具隱私保障 - 檔案絕不會離開您的裝置

檢查與中繼資料

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PDF 檔案:

在這裡選擇或拖放檔案

私密 - 檔案絕不會離開您的裝置

或貼上 Ctrl+V
零網路傳輸隱私保證: 0 位元組上傳至外部伺服器。所有處理皆在本機瀏覽器沙箱中進行。

位元組層級標頭簽章(檔案簽章)

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PDF 檔案:

十六進位簽章(偏移量 0):

25 50 44 46

ASCII 表示法: %PDF

標準化: ISO 32000-1 (2008) / ISO 32000-2 (2020)

技術規格

容器架構二進位與 ASCII 混合物件階層,具有交互參照表
壓縮FlateDecode (Deflate)、DCTDecode (JPEG)、CCITT Fax、JBIG2、JPXDecode
位元組序二進位物件串流使用大端序(網路位元組順序)
色彩空間sRGB, Display P3, DeviceCMYK, 灰階, 專色(Pantone)
色版與結構多層向量、排版、點陣串流與內嵌中繼資料
最大尺寸200 x 200 英吋(PDF 1.6+ 中的 UserUnit 允許高達 15,000,000 英吋)
透明度完整的 alpha 透明度、混合模式與不透明度遮罩
串流與漸進式線性化 PDF(「Fast Web View」)允許透過 HTTP 範圍請求進行位元組範圍串流

技術比較矩陣:PDF 對比競爭格式

技術屬性PDF (目前)DOCXEPUBHTML5
視覺版面保真度固定頁面版面,旨在保留定位;顯示結果會因檢視器與輸出裝置而異流動式排版;會因 Word 版本與已安裝字型而異可重新排版的閱讀器版面;不保證固定的排版流動式 CSS 方塊模型;取決於螢幕的算繪結果
獨立性可內嵌字型與圖片資源,但內容取決於檔案與製作設定獨立的 XML 容器(系統字型通常未內嵌)獨立的 ZIP 容器(封裝的 XHTML/CSS 資源)需要外部 HTTP 資源,除非透過 MHTML 封裝
密碼編譯簽章內建於 ISO 規格中的原生 PAdES 與 X.509 密碼編譯數位簽章支援 Office XML DSig 數位簽章需要自訂數位容器簽章需要 Web Crypto API 或外部 TLS 傳輸保證
行動裝置回應式固定頁面畫布(在小螢幕上需要縮放與平移)極佳的回應式文字重新排版專為流動式行動電子書閱讀而設計透過 CSS 媒體查詢實現原生回應式版面
標準化開放國際標準(ISO 32000-2:2020)ECMA-376 / ISO/IEC 29500W3C / IDPF 開放標準W3C Living Standard / WHATWG

常見損壞模式與十六進位修復指南

Acrobat 或 PDF 檢視器回報「檔案已損毀,無法修復」或開啟時完全空白。

根本原因: 以 ASCII 模式進行 FTP 或 HTTP 傳輸時,將二進位位元組序列進行了轉換(將 0x0A 取代為 0x0D 0x0A),導致交互參照(xref)表格的位元組偏移量錯亂。

修復: 現代的 PDF 修復公用程式(例如 qpdf --repair 或 File2File.app 修復工具)會以線性方式重新掃描檔案、重建物件字典,並重新產生新的 xref 表格。

PDF 檢視器無法載入文件,或在最後一頁當機。

根本原因: 下載不完整或磁碟寫入未完成,遺漏了「%%EOF」標記與結尾字典。

修復: 使用「tail -c 128 document.pdf」檢查檔案結尾。如果缺少 %%EOF,請檢查根目錄物件是否存在,並附加指向最高有效物件編號的人工 xref 表格。

嵌入字型算繪為無法辨識的符號、空白方塊(.notdef)或問號。

根本原因: 未嵌入的子集字型參照了檢視裝置上缺少的系統字型,或 ToUnicode CMap 表格損毀。

修復: 透過 Ghostscript(gs -o fixed.pdf -sDEVICE=pdfwrite -dEmbedAllFonts=true broken.pdf)重新嵌入缺少的字型子集,或是將文字元素轉換成向量曲線。

安全性分析與解析器攻擊向量

PDF 支援主動式指令碼、內嵌檔案與壓縮物件串流等功能,閱讀軟體必須安全地解析與處理這些功能。瀏覽器的 PDF 檢視器可能會使用沙箱來隔離文件處理過程。

已知攻擊向量

  • 嵌入的 Acrobat JavaScript(JS API)會在開啟文件時執行任意程式碼或網路釣魚攻擊。
  • 設定為執行外部系統二進位檔或 Shell 指令碼的啟動動作(/Launch)。
  • 舊版 Type 1 與 TrueType 字型解析引擎中的字型算繪漏洞,會觸發緩衝區溢位。
  • 透過惡意 URI 動作(/URI)或表單提交進行伺服器端請求偽造(SSRF)與 NTLM 雜湊憑證竊取。

防禦最佳實務: 切勿在啟用 Adobe Acrobat JavaScript 執行的情況下開啟不受信任的 PDF。若要在網頁上檢視,請一律透過瀏覽器的沙箱化 WebAssembly/PDF.js 引擎算繪,或將不受信任的 PDF 轉換為經過清理的 PDF/A-1b 文件。

歷史起源與里程碑

2020發布 ISO 32000-2:2020,將現代 PDF 2.0 的增強功能標準化。
2008Adobe 將 PDF 規格轉移給國際標準化組織,成為 ISO 32000-1。
1993推出 PDF 1.0 與 Adobe Acrobat 同步,支援文字、連結與字型。
1991John Warnock 博士在 Adobe 發起 Camelot 專案,以解決數位檔案的可攜性問題。

主要優勢與優點

  • 旨在跨不同系統保留頁面版面,儘管外觀可能會隨字型、檢視器與列印設定而有所不同。
  • 支援數位密碼學簽章、塗銷註解與 DRM 存取權限。
  • 可包含向量圖形、字型與壓縮點陣串流;字型與其他資源不一定會內嵌。

技術限制與缺點

  • 固定版面的頁面畫布,使得在小型智慧型手機上自動回應式重新排版相當困難。
  • 複雜的內部物件串流階層若未進行壓縮與未參照物件清除,可能會導致檔案大小膨脹。
  • 內嵌 JavaScript 與動態啟動動作功能呈現了廣泛的攻擊面。

有趣的技術冷知識

  • 最初的 Camelot 專案論文設想從任何應用程式直接以電子方式將文件列印到任何顯示器上。
  • 每個 PDF 檔案都以確切的字串「%%EOF」結尾,用以標記檔案結尾。
  • 某些法院與封存組織指定 PDF/A 用於保存工作流程;具體要求因管轄區與機構而異。

常見技術問題

為什麼 PDF 頁面在螢幕和印表機上看起來可以很相似?

PDF 以固定的座標儲存頁面內容,這有助於保留版面配置。算繪外觀仍可能因字型嵌入、檢視器行為、色彩管理與印表機設定而異。

標準 PDF 與 PDF/A 有什麼區別?

PDF/A(ISO 19005)是專為長期封存設計的特殊子集。它嚴格禁止可能危及未來可讀性的功能,例如 JavaScript、外部字型連結、加密、聲音/影片嵌入以及相依於裝置的色彩空間。所有字型與色彩設定檔都必須 100% 嵌入。

現代文件中的 PDF 壓縮是如何運作的?

PDF 使用針對不同內容類型量身打造的多種獨立壓縮濾鏡。文字、向量指令和字型度量資料會使用 FlateDecode(zlib/deflate)進行壓縮。相片影像使用 DCTDecode(JPEG)或 JPXDecode(JPEG 2000),而二值單色掃描文字則使用 JBIG2 或 CCITT Fax Group 4 壓縮。

為什麼 PDF 檔案在刪除頁面或圖片後通常仍然很大?

修改 PDF 時,許多編輯器會執行「增量更新」:將新的物件串流與新的 xref 表格附加到檔案結尾,而不刪除舊物件,以便快速復原。若要實際縮減檔案大小,文件必須經過最佳化處理,以清除未參照的物件。