PDF格式

**可攜式文件格式**（英語：**P**ortable **D**ocument **F**ormat，縮寫：**PDF**）是一種用獨立於應用程式、硬體、操作系統的方式呈現文件的檔案格式。每個 PDF 檔案包含固定布局的平面文件的完整描述，包括文字、字形、圖形及其他需要顯示的資訊。PDF 檔案除平面的文字和圖形外，還可能包括邏輯結構元素，注釋、表單、圖層、富媒體（包括影片內容）之類的互動元素，使用 U3D 或 PRC 的三維物件，以及多種其他資料內容。PDF 規範還提供了啟用這些功能時所需的加密功能、數位簽章、文件附件和元資料等。

PDF 源自 1991 年 Adobe Systems 共同創始人約翰・沃諾克發起的「Camelot 專案」。2008 年成為 ISO 標準的一部分，編號 ISO 32000，最新的版本 ISO 32000-2:2020 在 2020 年十二月發布。

## 歷史

Adobe Systems 在 1993 年免費提供了 PDF 規範，當時與 PDF 一起競逐跨平台文件格式的，還包括 DjVu（仍在開發中）、Envoy、Common Ground Digital Paper、Farallon Replica 及 Adobe 自己本身的 PostScript（.ps）格式。在全球資訊網及 HTML 文字尚未興起時，PDF 在桌面出版工作流技術當中很受歡迎。PDF 起初為 Adobe 所控制的專有格式，直到 2008 年 7 月 1 日才被官方以開放標準發行，並由國際標準化組織以 ISO 32000-1:2008 發布。 此後，標準的控制權便移轉到了產業專家志願者所組的 ISO 委員會底下。2008 年，Adobe 在 ISO 32000-1 發佈了公共專利許可，對於製作、使用、銷售及發佈 PDF 相容的應用所需的專利，皆賦予買斷式授權。

PDF 1.7 含有一些 Adobe 所定義的專有技術，如 Adobe XML 表單結構（XFA）和 JavaScript 中對 Acrobat 的擴充。這些技術被 ISO 32000-1 參照為對於該規範之完整實現不可或缺且規範性的，但是它們並沒有被標準化，其規格也只有發佈在 Adobe 的網站上。這些技術大部份也沒有被熱門的 PDF 第三方實現所支援。

2017 年 7 月 28 日，發佈了 ISO 32000-2:2017（PDF 2.0）。ISO 32000-2 不將任何專有技術當作是規範性參照檔案。

2020 年 12 月 14 日，發布了 ISO 32000-2:2020（PDF 2.0）。在 2017 版本的基礎上包括了對規範性參照的澄清、更正以及其他的一些重要更新。 

## 技術基礎

PDF 檔案通常由向量圖形、文字和點陣圖圖形構成。

PDF 主要由三項技術組成：

* 衍生自 PostScript 頁面描述語言的子集，用以生成和輸出圖形。
* 字型嵌入 / 替換系統，可使字型隨檔案一起傳輸。
* 結構化的儲存系統，用以綁定這些元素和任何相關內容到單個檔案，帶有適當的資料壓縮系統。

### PostScript

PostScript 是一種執行於直譯器以生成圖像的頁面描述語言，一個需要大量資源的行程。不僅能處理圖形，也具有 `if` 及 `loop` 之類命令的標準程式語言特性。PDF 很大程度上基於 PostScript，但做了簡化，以移除像這樣的流控制特性，還保持著 `lineto` 之類的圖形命令。

通常，類 PostScript 的 PDF 代碼產生於 PostScript 原始檔。以 PostScript 代碼輸出的圖形命令被收集並標記；其中文件所參照的任何檔案圖像或字型也被收集，然後每一件都被壓縮成單個檔案。由此，整個的 PostScript 領域（字型、輸出、計量）得以保持完整。

作為一個文件格式，PDF 相比較於 PostScript 有一些優勢：

* PDF 包含已標記和解析的 PostScript 原始碼，以在修改 PDF 頁面描述中的項與修改所產生的頁面造型之間直接保持一致。
* PDF（自 1.4 版）支援真圖形透明度；PostScript 不支援。
* PostScript 是一種帶有隱形全域狀態的直譯語言，因此伴隨著一頁的指令能任何後續頁面的表現。因此，PostScript 文件中所有先前的頁面必須經過處理以決定所給出的頁面的正確的表現，而 PDF 文件中的每一頁不受其他因素的影響。結果 PDF 檢視器允許使用者迅速跳轉到長文件的最後一頁，而一個 PostScript 檢視器需要在能夠顯示目標頁面之前繼續地處理所有的頁面（除可選 PostScript 文件結構規範已被周密地遵守外）。

PDF 1.6 及更高版本支援嵌入 PDF 檔案的互動式 3D 文件，可以使用 U3D、PRC 或其他各種 3D 格式嵌入 3D 圖像。

## 技術概括

### 檔案結構

PDF 檔案是 COS（"Carousel" Object Structure，Carousel 物件結構）格式的子集。COS 也伴隨著 FDF 檔案。COS 樹檔案主要由物件組成，其中有八種類型：

* 布林值，表示 true 或 false
* 數字
* 字串
* 名稱
* 陣列，物件的指令性集合
* 字典，按名稱索引物件的集合
* 字串流，通常包含大量資料
* 空物件

物件可以是直接（嵌入其他物件）或非直接的。直接物件以物件號及代號編號。稱為 xref 表的索引表賦予每個物件從檔案開頭起的位元組偏移量。這一設計允許有效的隨機存取到檔案中的物件，還允許無需重寫整個檔案（增量更新）即可做出小的改動。從 PDF 1.5 版開始，非直接物件也可位於稱為「物件流」的字串流中。這一增加檔案大小的技術有大量小的非直接物件，並且對置標 PDF 特別有用。

PDF 檔案有兩種輸出方式：非線性（非「最佳化」）和線性（「最佳化」）。非線性 PDF 檔案比線性的占用更小的硬碟空間，即使因為一部分的資料要求文件中的集合頁面通過 PDF 檔案分散開而存取更慢。線性 PDF 檔案（也稱「最佳化」或「web 最佳化」PDF 檔案）以使得網頁瀏覽器外掛程式無需等待下載整個檔案來閱讀的方式構建，自從它們以線性方式寫入硬碟（如同頁面順序）開始。PDF 檔案可用 Adobe Acrobat 軟體或 QPDF 最佳化。

### 圖像模式

圖形在 PDF 中呈現的基本設計是以非常類似於 PostScript 中的方式，除了 PDF 1.4 增添的透明度的使用。

PDF 圖形使用裝置獨立性笛卡兒坐標系來描述頁面的外觀。一個 PDF 頁面描述可使用矩陣來縮放、旋轉或錯切圖形元素。PDF 中的一個主要概念是圖形狀態，即是可能會通過頁面描述修改、儲存或還原的圖形參數的集合。PDF 有（如在 1.6 版）24 種圖形狀態屬性，其中最重要的有：

* 當前變換矩陣（CTM），決定坐標系
* 剪下路徑
* 色彩空間
* 阿爾法複合，透明度的關鍵部分

#### 向量圖

PDF 中的向量圖如同在 PostScript 當中一樣，是由路徑組成的。路徑通常由直線和多項的貝茲曲線組成，但也可以從文字的外廓構建。不同於 PostScript，PDF 不允許帶直線和曲線的單一路徑去組合文字外廓。路徑可被描繪、填充或用於剪取。描繪和填充可用任意圖形狀態中的色彩集，包括式樣。

PDF 支援多種調色盤類型。最簡單的是瓷磚式樣，其中藝術作品的一部分被指定以被重複地繪製。這可能是彩色瓷磚式樣，帶有在式樣物件中的指定的顏色，或是延遲色別編碼到式樣已繪製時候的沒有顏色的瓷磚式樣。從 PDF 1.3 開始還有了底紋式樣，連續繪製不同的顏色。七種底紋式樣中最簡單的是軸向底紋（Type 2）和徑向底紋（Type 3）。

#### 點陣圖

PDF 中的點陣圖（稱作 Image XObjects）由帶相關字串流的字典呈現。字典描述了圖像的屬性和包含圖像資料的流。（少見的是，點陣圖或許會作為一個內嵌圖像被直接嵌入於頁面描述。）圖像通常出於壓縮的目的過濾。PDF 中支援的圖像過濾器包含了常用的過濾器

* **ASCII85Decode** 用於把字串流放入 7 位 ASCII 的過濾器
* **ASCIIHexDecode** 類似於 ASCII85Decode，但相容性低
* **FlateDecode** 基於 RFC 1950 及 RFC 1951 所定義的 zlib/deflate 演算法（亦即 gzip，但不是 zip）的常用過濾器；引入於 PDF 1.2；可用兩組預測功能中的一組以進一步相容 zlib/deflate 演算法：出自 TIFF 6.0 規格中的 Predictor 2 和來自 PNG 規格（RFC 2083）的預測器（過濾器）
* **LZWDecode** 基於 LZW 演算法的過濾器可用兩組預測功能中的一組進一步相容 LZW 壓縮：出自 TIFF 6.0 規格中的 Predictor 2 和來自 PNG 規格的預測器（過濾器）
* **RunLengthDecode** 使用遊程編碼演算法和圖像指定的過濾器的用於帶重複資料的字串流的簡單的壓縮演算法
* **DCTDecode** 基於 JPEG 標準的有損過濾器
* **CCITTFaxDecode** 基於 ITU-T T.4 和 T.6 中定義的 Group 3 或 Group 4 CCITT（ITU-T）傳真壓縮標準的無失真二值（黑白）過濾器
* **JBIG2Decode** 基於 JBIG2 標準的有損或無失真二值（黑白）過濾器，引入 PDF 1.4
* **JPXDecode** 基於 JPEG 2000 標準的有損或無失真過濾器，引入 PDF 1.5

通常 PDF 中包含的所有圖像嵌入於圖像，但 PDF 允許圖像資料通過使用外部字串流或替代圖像儲存於外部檔案。PDF 的標準子集，包括 PDF/A 和 PDF/X，禁止這些特性。

#### 文字

文字在 PDF 中以頁面內容字串流中的「文字元素」呈現出來。一個文字元素指定字元應在指定位置描繪。字元用所選字型源的編碼指定。

##### 字型

PDF 中的字型物件是對數位字型的描述。可能是字型中的字元的描述，或者是包含嵌入的字型檔案。後者叫嵌入字型，前者叫非嵌入字型。所嵌入的字型檔案基於廣泛使用的標準數位字型檔案：**Type 1**（及其壓縮版變種 **CFF**）、**TrueType** 和（自 PDF 1.6 版起）**OpenType**。另外 PDF 支援由 PDF 圖形處理器描述的字型組件中的 **Type 3** 變種。

##### Standard Type 1 字型（Standard 14 字型）

以 Standard 14 字型著稱的四種字型在文件中 PDF 有特別的意義：

* Times（v3，常規、斜體、粗體和粗斜體）
* Courier（常規、斜體、粗體和粗斜體）
* Helvetica（v3，常規、偽斜體、粗體和粗偽斜體）
* Symbol/Zapf Dingbats

這些字型有時稱作 Base 14 字型。這些字型或有相同度量的合適的替代字型，必須能用在所有 PDF 閱讀器上，而且不必嵌入 PDF。PDF 檢視器必須掌握這些字型度量。否則字型如果沒有嵌入 PDF 就可能會被替換。

##### 編碼

文字字串中，字元用以編碼對映字形於當前字型的字元代碼（整數）顯示。預定義的編碼有多種，包括 WinAnsi、MacRoman，以及大量東亞語言編碼，而且字型可以有自己的編碼。（即使 WinAnsi 和 MacRoman 編碼取自 Windows 和 Macintosh 作業系統中歷史上的專有編碼，用這類編碼的內容在任何平台上都執行的好。）PDF 可以指定可以使用的預定義的編碼、字型內建編碼，或者提供預定義或內建編碼的查詢表（不對 TrueType 字型推薦）。PDF 中的編碼機制是為 Type 1 字型設計的，而且應用到 TrueType 字型的規則是複合的。

對於大型字型或者帶非標準字形的字型，特殊編碼 Identity-H（用於橫寫）或 Identity-V（用於豎寫）被使用。如果關於字元的語意資訊被預定義，這類字型有必要提供 ToUnicode 表。

#### 透明度

PDF 的原始圖像模型像 PostScript 的 opaque：頁面上描繪的每個物件完全替換先前在同一位置標記的任何東西。在 PDF 1.4 中圖像模型被擴充以允許透明度。使用透明度的時候，新物件與先前標記的物件相互作用產生混合的特效。透明度添加到 PDF 由寫到 PDF 1.3 及早期的規格的產品中被忽略設計的新的擴充方法完成。結果，使用少量透明度的檔案在舊的檢視器中可能會以被接受地視圖檢視，但大量用透明度的檔案在舊的檢視器中會顯示不正確而沒警告。

透明度擴充基於透明度組、混合模式、形狀和 alpha 的關鍵概念。這一模式緊密對應 Adobe Illustrator 9 的特性。混合模式基於當時 Adobe Photoshop 所用的。PDF 1.4 規格出版的時候，用於計算混合模式的公式被 Adobe 保密。此後它們被公布。

PDF 規格中透明度組的概念獨立於 Adobe Illustrator 之類的應用中已有的「組」或「層」的概念。那些反映物件之上的邏輯關係的分組在編輯那些物件的時候有意義，但不是圖像模型的一部分。

### 互動式元素

PDF 檔案或許包含注釋、表單、影片和 Flash 動畫之類的互動式元素。

**富媒體 PDF** 是一個用來描述可以嵌入或鏈入 PDF 的互動式內容的術語。這一內容必須用 Flash 檔案格式提供。Adobe 收購 Macromedia 的時候，公司的主業是 Flash，而且 Flash 播放器被嵌入 Adobe Acrobat，Adobe Reader，移除了用於 Flash、QuickTime 或 Windows Media 之類第三方外掛程式的需。不幸的是，這造成 QuickTime 影片從 PDF 被禁這樣與蘋果公司的裂痕。富媒體專家 Robert Connolly 相信這一事件引發了蘋果與 Adobe 之間 Flash iPhone/iPad 爭論之上的衝突。富媒體 PDF 將不在蘋果的 iPad 之類的 iOS 裝置上操作，而且互動性受到限制。

**互動式表單**是一個添加表單到 PDF 檔案格式的機制。

PDF 當前支援用於整合資料和 PDF 表單的兩種不同的辦法。兩種格式今天並存於 PDF 規格：

* **AcroForms**（又叫 **Acrobat forms**）引入 PDF 1.2 格式規格並包含於所有後來的 PDF 規格。
* **Adobe XML 表單架構（XFA）** 的表單，引入 PDF 1.5 格式規格。XFA 規格沒有包含於 PDF 規格，僅僅作為可選特性參考。Adobe XFA 表單不與 AcroForms 相容。

#### AcroForms

AcroForms 於 PDF 1.2 格式被引入。AcroForms 准許使用物件（如文字方塊、選擇鈕等）及一些代碼（如 JavaScript）。

在標準 PDF 動作類型之外，互動式形式（AcroForms）支援提交、重設和匯入資料。「提交」動作傳送所選表單欄位和值的名稱給指定的統一資源定為符（URL）。互動式表單欄位名稱和值或許會被以任意格式提交（取決於輸出格式、提交的 PDF 和 XFDF 旗標的設定）：

* HTML 表單格式（自 PDF 1.5 起用 HTML 4.01 規格；1.2 起用 HTML 2.0）
* 表單資料格式（Forms Data Format，FDF）
* XML 表單資料格式（XML Forms Data Format，XFDF）（擴充 XFDF 規格，2.0 版；自 PDF 1.5 起被支援；在 PDF 1.4 中替換 XML 表單提交格式定義）
* PDF（整個文件可以被提交，而不是單獨的欄位和值）。（PDF 1.4 中定義）

AcroForms 可以保持表單欄位於包含 key:value 組合的外部的單獨的檔案。內部的檔案可能使用 FDF 和 XFDF 檔案。使用權（UR）簽章定義匯入表單資料檔案以 FDF、XFDF 及文字（CSV/TSV）格式，及以 FDF 及 XFDF 格式從資料檔案匯出檔案的權利。

##### 表單資料格式（FDF）

表單資料格式（Forms Data Format，FDF）基於 PDF，使用同樣的句法和基本上一樣的檔案結構，但比 PDF 簡單，自從 FDF 文件的主體由只有一個要求的物件組成開始。表單資料格式定義於 PDF 規格（自 PDF 1.2 起）。表單資料格式可在表單資料到伺服器、接收回應和組合到互動式表單的時候被使用。還可以被用來匯出表單資料到能被導回到相應的 PDF 互動式表單的單獨的檔案。從 PDF 1.3 開始，FDF 可被用來定義用於從所應用的 PDF 文件分開的注釋的容器。FDF 通常封裝 X.509 憑證之類的資訊、要求憑證、設定目錄、設定時間戳伺服器和為網路傳輸嵌入 PDF 檔案。FDF 使用 MIME 內容類型 application/vnd.fdf、副檔名.fdf，並在 Mac OS 使用檔案類型 'FDF'。匯入和匯出獨立 FDF 檔案的支援沒有被自由或免費 PDF 軟體廣泛的實現。例如，Evince、Okular、Poppler、KPDF 或 Sumatra PDF 沒有匯入 / 匯出的支援，然而，Evince、Okular 和 Popller 填入 PDF Acroforms 並在 PDF 中儲存已填寫資料。匯入獨立 FDF 檔案的支援在 Adobe Reader 中得到實現；匯入和匯出支援（包括在 PDF 中儲存 FDF 資料）作為範例在 Foxit Reader 和 PDF-XChange Viewer Free 中得到實現；PDF 檔案中 FDF 資料的儲存也被 pdftk 支援。

##### XML 表單資料格式（XFDF）

XML 表單資料格式（XFDF，XML Forms Data Format）是表單資料格式的 XML 版，但 XFDF 只執行 FDF 內含表單及注釋的子集。FDF 字典中的一些詞條沒有等價於 XFDF 的，像是狀態、編碼、JavaScript、頁面關鍵字、嵌入式 FDF、差異和目標。此外，XFDF 不允許在基於已給定的資料的新頁面大量生成或者添加；就像使用 FDF 檔案的時候能被完成的一樣。XFDF 規格被參照於（但不包含於）PDF 1.5 規格（及其以後的版本）。它被單獨描述為「XML 表單資料結構規格」（XML Forms Data Format Specification）。PDF 1.4 規格允許以 XML 格式提交表單，但在 PDF 1.5 規格中以 XFDF 格式提交取代。XFDF 符合 XML 標準。

到 2016 年 12 月，XFDF 3.0 在 _ISO 19444-1:2016 – Document management – XML Forms Data Format – Part 1: Use of ISO 32000-2 (XFDF 3.0)_ 的名義下成為 ISO/IEC 標準。這個標準是 ISO 32000-2 的規範性參考資料。

XFDF 可用以和 FDF 相等的方式，如提交表單資料給伺服器，做出修訂，然後返回，並且新表單資料被匯入到互動式表單。它還可以用來匯出表單資料到能被導回到相應的 PDF 互動式表單的單獨的檔案。

#### Adobe XML 表單架構（XFA）

PDF 1.5 格式中，Adobe Systems 引入了新的、專有的表單格式，名為 Adobe XML 表單架構（XFA）。XFA 2.02 參照在 PDF 1.5 規格（及以後的版本），但單獨描述為《Adobe XML Forms Architecture (XFA) Specification》，有多個版本。XFA 規格沒有包括在 ISO 32000-1 PDF 1.7 並僅僅作為由 Adobe 建立的外部專有規格參照。在 ISO 32000-2（PDF 2.0）當中被棄用。

Adobe XFA 表單不與 AcroForms 相容。Adobe Reader 包含使用 XFA 表單的「禁用特性」，僅在打開只來自 Adobe 的可行的技術建立的 PDF 文件時啟用。XFA Forms 不相容於 Adobe Reader 6 以前的版本。

XFA 表單可建立或用作 PDF 檔案或作為 XDP（XML 封包）檔案。PDF 中 XFA 源的格式由 XML 封包規格描述。XDP 可能作為單獨的文件，也可能在 PDF 文件的內部攜帶。XDP 提供打包周邊 XML 容器內部的表單組件的機制。XDP 也可以打包一個 PDF 檔案，伴隨 XML 表單和模板資料。PDF 可能包含 XFA（在 XDP 格式中），XFA 也可能包含 PDF。在用於 XFA 表單 XFA（XML 表單架構）語法從一個應用移到另一個應用的時候，它們必須以 XML 封包封裝。

當 PDF 和 XFA 結合在一起，結果是任意頁面中的 XFA 表單覆蓋了 PDF 背景。這一架構有時被提作 XFAF（XFA Foreground，XFA 前景）。替代方法是直接在 XFA（不用 PDF，或者只用帶有 PDF 標記的最小構造 XFA 的容器的「外掛 PDF」，或用靜態 XFA 表單的預彩現描述作為 PDF）展開所有表單，包括樣板檔案。這有時被稱為全 XFA。

PDF 1.5 開始，可變文字欄位的文字內容，以及標記註解可能包含格式資訊（樣式資訊）。這些富文字字串是符合 XML 表單架構規格 2.02（本身是 XHTML 1.0 規格的子集）定義的富文字慣例的 XML 文件，擴充了 CSS2 樣式屬性中受限的設定。PDF 1.6 中，PDF 支援 XML 表單架構（XFA）規格 2.2 定義的富文字元素和屬性。PDF 1.7 中，PDF 支援 XML 表單架構（XFA）規格 2.4 定義的富文字元素和屬性。

多數 PDF 處理器不處理 XFA 內容。生成外掛 PDF 的時候會被建議包含於 PDF 標記的一個簡單的單頁 PDF 圖像顯示警告（如：「為了檢視本文件的全部內容，你需要新版 PDF 檢視器」等。）能彩現 XFA 內容的 PDF 處理器應該不現實警示頁面圖像或者以動態表單內容迅速替換。帶有一些 XFA 彩現功能支援的 PDF 軟體的例子包括 Adobe Reader for Windows、Linux、Mac OS X（但不是 Adobe Reader Mobile for Android /iOS）或 Nuance PDF Reader。

### 邏輯架構與可讀性

「標籤」PDF（ISO 32000-1:2008 14.8）含有文件架構和語意資訊，以允許可靠的文字抽取及使用。技術上來說，標籤 PDF 是建立在 PDF 1.3 所引入的邏輯結構框架上，對於其格式的程式化使用 。標籤 PDF 定義了一組標準結構型別及屬性，允許頁面內容（文字、圖形和圖片）之後被提取並再利用於其他用途。

當 PDF 檔案僅供列印時，並不要求支援標籤 PDF。因為此一特色是非必須的，且 ISO 32000-1 對於標籤 PDF 的規則相對模糊，所以在消費性裝置當中，包括輔助技術（AT），標籤 PDF 的支援參差不齊。

一個專門針對可讀性、為 ISO 標準之子集的 PDF 規格：PDF/UA 於 2012 年首次發佈。

### 安全和簽章

一份 PDF 檔案可能以用於驗證的擔保或者數位簽章加密。

由 Acrobat PDF 提供的標準擔保以兩種不同的方法及兩種不同的密碼組成，使用者密碼，加密檔案並阻止開啟；所有者密碼，指定即使文件被解密的時候應該被限制的操作，可以包括：列印、從文件複製文字和圖像、修飾文件，或者添加或刪除文字注釋和 AcroForm 欄位。使用者密碼（控制開啟）加密檔案並要求密碼破解以去除，難度取決於密碼長度及加密演算法 —— 它可能非常安全（假設好的密碼及加密演算法沒有已知的攻擊手法）。所有者密碼（控制操作）不加密檔案，相反取決於客戶端軟體以遵循這些限制，並且不安全。所有者密碼可以被許多通常可用的 PDF 破解軟體移除，包括一些自由的線上服務。由此，文件作者放在 PDF 文件中的使用限制不安全，而且不能在一旦檔案被散布時保證；這一危險在使用 Adobe Acrobat 軟體以建立或編輯 PDF 檔案應用這類限制的時候顯現出來。

即使沒有移除密碼，許多免費或開源 PDF 閱讀器忽略權限「保護」並允許使用者列印或者做文字摘要的複製，就像文件沒被密碼保護限制一樣。

一些解決方案像 Adobe 的 LiveCycle Rights Management 更強化資訊權利管理的方式，不僅能限制誰能打開文件，而且以標準的安全處理程式做不到的方式可靠的執行權限。

#### 使用權

從 PDF 1.5 起，使用權（UR）簽章用來啟用在一些 PDF 檢視器應用中不是預設的附加的互動式特性。這一簽章用來驗證由真實的授權機構賦予的許可。例如，它可以允許使用者：

* 儲存伴有修訂表單和 / 或注釋資料的 PDF 文件
* 從 FDF、XFDF 和文字（CSV/TSV）格式中的資料檔案匯入
* 從 FDF 和 XFDF 格式中的資料檔案匯出
* 從資料提交
* 從命名的頁面模板具體呈現新頁面
* 應用一個數位簽章到已有的數位簽章表單欄位
* 建立、刪除、修正、複製、匯入、匯出注釋

例如，Adobe Systems 在 Adobe Reader 中授權啟用附加特性，使用公鑰密碼學。Adobe Reader 使用從一個 Adobe 授權的權威認證的驗證那個簽章。PDF 1.5 規格宣稱其他 PDF 閱讀器應用可以為他們自己的目的自由使用這一相同機制。

### 檔案附件

PDF 檔案可以有文件級和頁面級的檔案附件，讀者可存取並打開或儲存於原生的檔案系統。PDF 附件可作為範例用 pdftk 加到已有的 PDF 檔案。Adobe Reader 提供對附件的支援，而且基於 Poppler 的閱讀器如 Evince 或 Okular 也有對文件級附件的支援。

### 元資料

PDF 檔案可包含兩種類型的元資料。第一種是文件資訊字典，一套像作者、標題、主題、建立及更新日期的關鍵字 / 值欄位。這儲存於可選的檔案尾部。有一小組欄位是有定義的，而且如果有需要，可以用附加的文字欄位擴充。

後來在 PDF 1.4 中，對元資料流的支援被加入，用可延伸元資料平台（XMP）來添加像在其他檔案格式那樣的基於 XML 標準的可延伸的元資料。這允許元資料附加到文件中的任何字串流，諸如關於嵌入式插圖的說明，以及整個文件（附加到文件目錄），使用可延伸的綱要。

## 相關技術

### Mars

Adobe 曾探索基於 XML 的下一代 PDF，代號 Mars。

Mars 的圖形元素的格式有時簡單地描述為 SVG，但根據 2007 年 11 月的 0.8 版草案規格（§3 Mars SVG Support）這一格式實際上僅僅是接近於 SVG：它同時包含 SVG 新增和移除的部分，因此一般不可被標準 SVG 工具檢視或建立：一些東西在 SVG 檢視器和 Mars 檢視器之間看起來明顯不同。

Adobe Systems 於 2008 年停止開發 Mars。

## 技術問題

### 掃描的文件

由掃描器硬拷貝文件建立的 PDF 檔案包含原始文字沒有由相同的文件直接建立的 PDF 檔案那樣相同的架構。掃描的文件原本地包含了文件的圖片，沒有關於文字的資訊。只要使用者可以看到它只是另一個 PDF 檔案，帶有從其他任意地方來的不能區分的名稱和副檔名；好的掃描器或許會精確地視作與原生的 PDF 檔案相同，即使是視覺上品質很差的檔案，常常帶有扭曲的頁面，給出了其本性。然而，檔案大小會明顯不同，而且不能搜尋文字。對於精確品質的掃描可以用帶光學字元辨識（OCR）的合適的軟體辨識文件中的文字，並嵌入文件中而使其可以檢索，取決於 OCR 的準確性。

### 可讀性

PDF 檔案可專門為讓殘疾人閱讀而建立。截至 2014 年 (2014-Missing required parameter 1=_month_!)PDF 檔案格式在使用中可以包含標籤（XML）、替換文字、標題、音訊描述等。置標 PDF 在 PDF/A-1a 規格中被要求。一些軟體可以自動生成置標 PDF，但這個特性不被預設啟用。常見的螢幕閱讀器，包括 JAWS、Window-Eyes、Hal 和 Kurzweil 1000 及 3000 可以朗讀置標 PDF，就像 Acrobat 和 Acrobat Reader 後來的版本一樣。此外，置標 PDF 可為有視覺障礙的讀者重排和放大。問題仍存在於給舊版 PDF 和從掃描的文件生成的 PDF 加標記。這些情況下，可讀性標記和重排就不可用，而且必須手動或用 OCR 技術處理。這些過程對於一些殘疾人是達不到的。

對 PDF 可讀性的一個重大挑戰是 PDF 文件有三種不同的視圖，取決於文件的建立，會和其他視圖相矛盾。這些視圖有：物理視圖、標記視圖和內容視圖。物理視圖可以顯示和列印（多數人認為的 PDF 文件）。標記視圖是螢幕閱讀器和其他存取技術用來給有障礙的使用者帶來高品質導航和閱讀體驗的。內容視圖基於 PDF 內容字串流中的物件的物理排列，並可能由不完全支援標記視圖的軟體顯示，如 Adobe Reader 的 Reflow 特性。

基於 ISO 32000-1 的可閱讀 PDF 國際標準 PDF/UA 在 2012 年以 ISO 14289-1 發布，並為可閱讀 PDF 技術建立規範的語言。

### 病毒和漏洞

PDF 附件帶病毒最先發現於 2001 年。這種名為 OUTLOOK.PDFWorm 或 Peachy 的病毒，會通過 Microsoft Outlook 以附件的形式將自己傳送至 Adobe PDF 檔案。然後會用 Adobe Acrobat 將自身啟用，但不會被 Acrobat Reader 啟用。

隨著時間推移，新的漏洞在 Adobe Reader 的多個版本被發現，促使企業發出安全性修復。其他 PDF 閱讀器也容易受到影響。一個惡化的因素是 PDF 閱讀器會被組態在網頁嵌入 PDF 時候自動啟動，為攻擊帶來了載體。如果惡意的網頁包含一份利用 PDF 的漏洞感染的 PDF 檔案，系統會無法抵抗，即使瀏覽器是安全的。其中一些漏洞是由於 PDF 標準允許 PDF 文件用 JavaScript 指令碼指令的結果。在 PDF 閱讀器中禁止執行 JavaScript 有助於緩解那些未來的漏洞，即使這不阻止 PDF 檢視器其他部分的漏洞。安全專家稱 JavaScript 對於 PDF 閱讀器來說不是基本的，而且出於禁止 JavaScript 的安全保障勝過任何造成的相容性問題。阻止 PDF 檔案漏洞的一種方式是有本地或網路服務能在閱讀前把檔案轉換成其他格式。

2010 年 3 月 30 日安全專家 Didier Stevens 報告 Adobe Reader 和福昕閱讀器有如果使用者經詢問允許啟動時執行惡意可執行檔的漏洞。

### 使用限制和顯示

PDF 可能會被加密，以致檢視或編輯內容時會要求輸入密碼。PDF 參考書同時定義 40 位和 128 位元加密，都運用 RC4 和 MD5 的複雜系統。PDF 參考書還定義第三方可以制定他們自己的 PDF 加密系統的方式。

PDF 檔案或許還包含嵌入的 DRM 限制，提供限制複製、編輯或列印的進一步控制。複製、編輯或列印的限制取決於閱讀軟體遵循他們，因此他們提供的安全機制是有限的。

PDF 參考書有面向終端使用者概覽的技術細節。就像 HTML 檔案一樣，PDF 檔案可以向網路伺服器提交資訊。這可以被用來追蹤客戶端 PC 的 IP 位址，這一過程被稱作背景連線通訊。Acrobat Reader 升級到 7.0.5 以後，使用者會被提示「...via a dialogue box that the author of the file is auditing usage of the file, and be offered the option of continuing」。

Adobe 通過 LiveCycle 安全伺服器提供針對特定文件設定安全策略的方法。這可以包括要求使用者認證並限制文件可被離線打開的時候可以被存取或者載入的時期。PDF 文件一旦被繫結到策略伺服器和指定策略，這一策略可以被所有者更改或復原。這一策略控制文件，否則就是「在自然狀態下」。每個文件打開或關閉事件也可以被策略伺服器追蹤。策略伺服器可以由個人設定，或 Adobe 通過 Adobe 線上服務提供公共服務。和其他 DRM 形式一樣，依附這些策略和限制有可能會，也有可能不會被閱讀器軟體執行。

### 預設的顯示設定

PDF 文件可以包含顯示設定，包括頁面顯示輸出和縮放級別。打開文件的時候 Adobe Reader 用這些設定去替換使用者的預設設定。免費的 Adobe Reader 不能移除這類限制。

## 內容

PDF 檔案通常混合了向量圖形、文字和點陣圖。PDF 的基本內容包括：

* 文字儲存為內容字串（就是不是文字本身）
* 由圖形和線條組成的用於說明和設計的向量圖形
* 由相片和其他類型的圖片組成的點陣圖

在近期 PDF 標準修訂中，PDF 文件還支援連結（文件內部或網頁）、表單、JavaScript（可通過 Acrobat 3.0 的外掛程式啟用），或者其他任意類型的能用外掛程式控制的可嵌入內容。

PDF 1.6 支援互動式 3D 文件嵌入 PDF——3D 繪圖可用 U3D 或 PRC 及其他多種格式嵌入。

在電腦螢幕上看起來相似的兩個 PDF 檔案有可能大小不同。例如，一個高解析度點陣圖比低解析度的占更多的儲存空間。通常更高的解析度更適宜列印文件而不是顯示於螢幕。其他可能影響檔案大小的可能有嵌入全部字型，尤其是東亞字型，以及將文字存為圖片。

## 軟體

PDF 通常免費提供，而且許多版本可以從多個來源獲得。

有許多軟體選項用來建立 PDF，包括內建於 Mac OS X 及多數 Linux 發行版、LibreOffice、Microsoft Office 2016、WordPerfect 9、Scribus 許多適用於 Microsoft Windows 的 PDF 列印驅動、pdfTeX 排版系統、DocBook PDF 工具、圍繞 Ghostscript 及 Adobe Acrobat 本身開發的應用以及 Adobe FrameMaker 的 PDF 排印功能。Google 的線上辦公套件 Google Docs 也允許上傳、儲存為 PDF。

光柵圖像處理器（RIPs）用於轉換 PDF 檔案為點陣圖格式以適應於成像在紙上及其他媒體的印表機、數字生產用印刷機以及一種被稱為柵格化的行程中的印前。有直接處理 PDF 能力的 RIP 包括在出自 Adobe Systems 和 Jaws 的 Adobe PDF 排印引擎與出自 Global Graphics 的 Harlequin RIP 當中。

有一些軟體可以直接建立空白的 PDF 文件，例如 Adobe 官方的 Adobe Acrobat DC ，但是通常意義不大；因為 Adobe Acrobat 並不擅長於對文件進行排版。

因為 PDF 具有完美展現檔案原貌的功能，因此市面上也有一部分軟體並非為 PDF 而生，但是通過一些開發函式庫或者圖形繪製框架也具有 PDF 的匯出功能。

一些用於編輯 PDF 檔案的特殊軟體，通過受很多限制並且比建立和編輯標準可編輯文件格式更昂貴的選擇。Inkscape 0.46 及以後版本允許通過 Poppler 加入中間的轉譯步驟編輯 PDF。

Adobe Acrobat DC 允許使用者對一個未加密的 PDF 檔案或者具有相關權限使用者對 PDF 檔案進行編輯，同時還內建了 OCR 辨識、注釋、表單預備、合併，數位簽章等十分完善的功能

Serif PagePlus 可打開、編輯和儲存已有的 PDF 文件，以及軟體套件中建立的文件的發布。

Microsoft Office Word 也支援打開、編輯和儲存已有的 PDF 文件的編輯功能。

Enfocus PitStop Pro，Acrobat 的外掛程式，允許 PDF 檔案的手動和自動編輯，同時免費的 Enfocus Browser 可以使編輯 PDF 的低階別架構成為可能。

大多數的 TeX 檔案經過編譯系統後預設輸出格式為 PDF 檔案

### 注釋

Adobe Acrobat 是允許使用者給已建立的 PDF 檔案注釋、突顯和添加筆記的專有軟體的一個案例。作為自由軟體可用的（GNU 通用公共許可協定許可下）一個 UNIX 應用是 PDFedit。另一個 GPL 授權的原生 UNIX 應用是 Xournal。Xournal 允許以不同的字型和顏色注釋，以及用於為文字或段落的快速下劃及突顯線條的規則。Xournal 還有一個用於方形、矩形和圓形的形狀辨識工具。Xournal 中的注釋可以被移動、複製或貼上。免費軟體福昕閱讀器，適用於 Microsoft Windows，允許注釋文件。Tracker Software 的 PDF-XChange Viewer 的免費版允許不受限制的注釋和標記。蘋果 Mac OS X 內建 PDF 閱讀器 Preview 也可以像免費軟體 Skim 那樣注釋，後者支援與 LaTeX、SyncTeX 和 PDFSync 整合，以及與 BibDesk 參考文獻管理軟體整合。免費軟體 Qiqqa 可以建立總結所有注釋的報告，而且筆記通過他們的 PDF 函式庫做出來。

對於行動版的注釋，iAnnotate PDF（來自 Branchfire）和 GoodReader（來自 Aji）允許對 PDF 注釋以及匯出注釋的摘要。

還有一些支援注釋 PDF 及其他文件格式 web 注釋系統，如 A.nnotate、crocodoc、WebNotes。

在 PDF 被期望擁有紙質文件的全部功能的地方，墨水注釋會被要求。一些接受來自滑鼠的墨水輸入的程式可能不足以對應平板上的手寫輸入。PC 上已有的解決方案包括 PDF Annotator 和 Qiqqa。

### 其他

PDF 軟體作為線上服務的例子包括用於檢視和儲存的 Scribd、用於線上編輯的 Pdfvue 和用於 PDF 轉換的 Zamzar。

1993 年出自 Global Graphics 的 Jaws 點陣圖處理器成為第一個不用轉換到其他格式原生產生 PDF 的銷售用的印前 RIP。公司在 1997 年給他們的 Harlequin RIP 發布了一個有同樣相容性的更新。

愛克發 - 吉華 1997 年推介並出售 Apogee，第一個基於 PDF 的印前工作流系統。

許多商業的膠印機接受遞交發布就緒的 PDF 檔案作為印刷來源，特別是 PDF/X-1a 子集和相同的變種。發布就緒的 PDF 檔案的提交是對接收已收集本地檔案工作的不確定性需求的替代。

PDF 被選為 Mac OS X 的「本地」元檔案格式，取代早期 Mac OS 的 PICT 格式。Quartz 圖形層的圖像模式基於 Display PostScript 和 PDF 共有的模式，產生了暱稱 Display PDF。Preview 應用與 Safari 網頁瀏覽器 2.0 及以後版本都可以顯示 PDF 檔案。對 PDF 的系統級支援使得 Mac OS X 應用可以自動建立 PDF 文件，給它們提供 OS 標準的列印架構支援。檔案可以按檔案檔頭輸出為 PDF 1.3 格式。在 Mac OS X 10.0 到 10.3 版截圖時，圖像也可以截取為 PDF；後來的版本儲存截圖為 PNG 檔案，雖然這一行為若有需要可以重新設定為 PDF。

一些桌面印表機也支援直接列印 PDF，可以不用額外的輔助生成 PDF 資料。目前，所有 PDF 相容印表機也支援 PostScript，但多數 PostScript 印表機不直接支援 PDF 列印。

自由軟體基金會曾認為他們的一個高優先級計劃「提供自由、高品質和全功能的一組軟體函式庫及程式實現 PDF 檔案格式及 ISO 32000 標準的相關技術」。而在 2011 年，GNU PDF 計劃從「高優先級」列表中被移除，因為 Poppler 函式庫的完善，激勵了像 Evince 之類的應用與 GNOME 桌面環境的廣泛應用。Poppler 基於 Xpdf 代碼。PDF 軟體列表亦列出可用的商業開發用軟體函式庫。

Apache 軟體基金會的 Apache PDFBox 計劃是一款用於處理 PDF 文件的開放原始碼 Java 函式庫。PDFBox 以 Apache 許可證授權發布。

一個名為 Devon Govett （頁面存檔備份，存於網際網路檔案館） 的 Adobe 員工在 GitHub 上開源了一款用於 JavaScript 的 PDF 操作函式庫 PDFKit （頁面存檔備份，存於網際網路檔案館）

Apple 開發者早期使用 Quartz 的 CGPDFDocument （頁面存檔備份，存於網際網路檔案館） 來繪製一個 PDF 文件，但是因為使用較為底層的圖形函式庫繪製 PDF 文件和檢視十分麻煩，因此在 2017 年的 WWDC 大會上 Apple 引進了 PDFKit （頁面存檔備份，存於網際網路檔案館） 來讓開發者在 Apple 產品的作業系統上讓自己的 App 支援繪製，檢視，標註 PDF 等等功能

## 參考文獻

## 參見

* XML 紙張規範
* PostScript
* DjVu
* PDF/A
* PDF 軟體列表

## 外部連結

* Adobe PDF 官方介紹：什麽是 PDF？Adobe 可攜式文件格式 （页面存档备份，存于網際網路檔案館）
* How was the PDF format created? Quora
* PDF Association - PDF Association 是軟體開發者創作及處理 PDF 文件的產業協會
* Adobe PDF 101: Summary of PDF
* Adobe: PostScript vs. PDF – 官方介紹的 PS、EPS 與 PDF 的比較
* _PDF Standards....transitioning the PDF specification from a de facto standard to a de jure standard_，存於網際網路檔案館 – 有關可存取文件格式的 PDF/E 及 PDF/UA 規格的資訊
* ISO 19005-1:2005（頁面存檔備份，存於網際網路檔案館） 國際標準化組織發布的 PDF/A-1 ISO 標準
* PDF Reference and Adobe Extensions to the PDF Specification（頁面存檔備份，存於網際網路檔案館）
* Portable Document Format: An Introduction for Programmers （頁面存檔備份，存於網際網路檔案館） – 對比 PDF、PostScript 及 PDF 構件的介紹（升級到 v1.3）
* The Camelot Paper（頁面存檔備份，存於網際網路檔案館） – John Warnock 概述的建立 PDF 的專案
* Everything you wanted to know about PDF but were afraid to ask（頁面存檔備份，存於網際網路檔案館） - Leonard Rosenthol（Adobe Systems）在 TUG 2007 上的談話記錄
* How to produce PDF with XSL-FO （頁面存檔備份，存於網際網路檔案館）
* 善用佳軟：全面接觸 PDF: 最好用的 PDF 軟體匯總 （頁面存檔備份，存於網際網路檔案館）