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

Quick Facts 副檔名, 網路媒體型式 ...
可攜式檔案格式(PDF)
Thumb
Adobe PDF圖示
副檔名.pdf
網路媒體型式
  • application/pdf,[1]
  • application/x-pdf
  • application/x-bzpdf
  • application/x-gzpdf
類型代碼英語Type codePDF [1](包含一個空格)
統一類型標識com.adobe.pdf
開發者Adobe Inc. (1991–2008年)
ISO (2008年–)
首次發布1993年6月15日,​31年前​(1993-06-15
最新版本
2.0
延伸為PDF/A, PDF/E, PDF/UA, PDF/VT, PDF/X
標準ISO 32000-2
自由格式
網站iso.org/standard/75839.html
Close

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

歷史

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

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

2017年7月28日,發佈了 ISO 32000-2:2017(PDF 2.0)。ISO 32000-2 不將任何專有技術當作是規範性參照檔案。[13]

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

技術基礎

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

PDF主要由三項技術組成:

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

PostScript

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

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

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

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

PDF 1.6 及更高版本支援嵌入 PDF 檔案的互動式3D文件,可以使用U3DPRC或其他各種3D格式嵌入3D圖像。[15][16]

技術概括

檔案結構

PDF檔案是COS("Carousel" Object Structure,Carousel對象結構)格式的子集。COS也伴隨著FDF檔案。[17]COS樹檔案主要由對象組成,其中有八種類型:[18]

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

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

圖像模式

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

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

向量圖

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

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/APDF/X,禁止這些特性。

文字

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

字型

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

Standard Type 1字型(Standard 14字型)

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

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

編碼

文字字串中,字元用以編碼對映字形於當前字型的字元代碼(整數)顯示。預定義的編碼有多種,包括WinAnsi、MacRoman,以及大量東亞語言編碼,而且字型可以有自己的編碼。(即使WinAnsi和MacRoman編碼取自WindowsMacintosh作業系統中歷史上的專有編碼,用這類編碼的內容在任何平台上都執行的好。)PDF可以指定可以使用的預定義的編碼、字型內建編碼,或者提供預定義或內建編碼的查詢表(不對TrueType字型推薦)。[23]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保密。此後它們被公布。[24]

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

互動式元素

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

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

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

PDF當前支援用於整合資料和PDF表單的兩種不同的辦法。兩種格式今天並存於PDF規格:[25][26][27][28]

  • AcroForms(又叫Acrobat forms)引入PDF 1.2格式規格並包含於所有後來的PDF規格。
  • Adobe XML表單架構英語XML Forms Architecture(XFA)的表單,引入PDF 1.5格式規格。XFA規格沒有包含於PDF規格,僅僅作為可選特性參考。Adobe XFA表單不與AcroForms相容。[29]

AcroForms

AcroForms於PDF 1.2格式被引入。AcroForms准許使用對象(如文字方塊選擇鈕等)及一些代碼(如JavaScript)。

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

  • 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檔案。[30][31][32]使用權(UR)簽章定義匯入表單資料檔案以FDF、XFDF及文字(CSV/TSV英語delimiter-separated values)格式,及以FDF及XFDF格式從資料檔案匯出檔案的權利。[25]

表單資料格式(FDF)
Quick Facts 副檔名, 網路媒體型式 ...
表單資料格式(FDF)
副檔名
.fdf
網路媒體型式
application/vnd.fdf[33]
類型代碼英語Type code'FDF'
開發者Adobe Systems
首次發布1996年 (1996)(PDF 1.2)
延伸自PDF
延伸為XFDF
標準ISO 32000-1:2008
免費格式?
Close

表單資料格式(Forms Data Format,FDF)基於PDF,使用同樣的句法和基本上一樣的檔案結構,但比PDF簡單,自從FDF文件的主體由只有一個要求的對象組成開始。表單資料格式定義於PDF規格(自PDF 1.2起)。表單資料格式可在表單資料到伺服器、接收回應和組合到互動式表單的時候被使用。還可以被用來匯出表單資料到能被導回到相應的PDF互動式表單的單獨的檔案。從PDF 1.3開始,FDF可被用來定義用於從所應用的PDF文件分開的注釋的容器。FDF通常封裝X.509憑證之類的資訊、要求憑證、設定目錄、設定時間戳伺服器和為網路傳輸嵌入PDF檔案。[32]FDF使用MIME內容類型application/vnd.fdf、副檔名.fdf,並在Mac OS使用檔案類型'FDF'。[25]匯入和匯出獨立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)
Quick Facts 副檔名, 網路媒體型式 ...
XML表單資料格式(XFDF)
副檔名
.xfdf
網路媒體型式
application/vnd.adobe.xfdf[34]
類型代碼英語Type code'XFDF'
開發者Adobe Systems
首次發布2003年7月 (2003-07)(參照於PDF 1.5)
最新版本
3.0
2009年8月,​15年前​(2009-08
延伸自PDF、FDF、XML
標準ISO 19444-1:2016
Close

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)。[31]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標準。[35]這個標準是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》,有多個版本。[36]XFA規格沒有包括在ISO 32000-1 PDF 1.7並僅僅作為由Adobe建立的外部專有規格參照。在ISO 32000-2(PDF 2.0)當中被棄用。

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

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

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

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

多數PDF處理器不處理XFA內容。生成外掛PDF的時候會被建議包含於PDF標記的一個簡單的單頁PDF圖像顯示警告(如:「為了檢視本文件的全部內容,你需要新版PDF檢視器」等。)能彩現XFA內容的PDF處理器應該不現實警示頁面圖像或者以動態表單內容迅速替換。[40]帶有一些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定義了一組標準結構型別及屬性,允許頁面內容(文字、圖形和圖片)之後被提取並再利用於其他用途。[41]

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

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

安全和簽章

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

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

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

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

使用權

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

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

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

檔案附件

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

元資料

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

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

相關技術

Mars

Adobe曾探索基於XML的下一代PDF,代號Mars。[45]

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

Adobe Systems於2008年停止開發Mars。[47]

技術問題

掃描的文件

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

可讀性

PDF檔案可專門為讓殘疾人閱讀而建立。[48][49][50][51][52]截至2014年 (2014-Missing required parameter 1=month!)PDF檔案格式在使用中可以包含標籤(XML)、替換文字、標題、音訊描述等。置標PDF在PDF/A-1a規格中被要求。[53][54]一些軟體可以自動生成置標PDF,但這個特性不被預設啟用。[55][56]常見的螢幕閱讀器,包括JAWSWindow-Eyes、Hal和Kurzweil 1000及3000可以朗讀置標PDF,就像Acrobat和Acrobat Reader後來的版本一樣。[57][58][59]此外,置標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啟用。[60]

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

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

使用限制和顯示

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

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

PDF參考書有面向終端使用者概覽的技術細節。[65]就像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」。[66]

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

預設的顯示設定

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

內容

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

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

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

PDF 1.6支援互動式3D文件嵌入PDF——3D繪圖可用U3DPRC及其他多種格式嵌入。[68][69]

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

軟體

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

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

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

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

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

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

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

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

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

大多數的 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.nnotatecrocodocWebNotes

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

其他

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

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

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

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

PDF被選為Mac OS X的「本地」元檔案英語metafile格式,取代早期Mac OSPICT英語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標準的相關技術」。[78][79]而在2011年,GNU PDF計劃從「高優先級」列表中被移除,因為Poppler函式庫的完善,[80]激勵了像Evince之類的應用與GNOME桌面環境的廣泛應用。Poppler基於Xpdf[81][82]代碼。PDF軟體列表亦列出可用的商業開發用軟體函式庫。

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

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

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

參考文獻

參見

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.