Pdf 檔 是 什麼

可移植文档格式 (PDF) 是 Adobe 在 1990 年代创建的一种文档。这种文件格式的目的是引入一种标准,用于以独立于应用软件、硬件和操作系统的格式来表示文档和其他参考资料。 PDF 文件格式具有包含文本、图像、超链接、表单域、富媒体、数字签名、附件、元数据、地理空间特征和 3D 对象等信息的全部功能,这些信息可以成为源文档的一部分。

在大多数情况下,将现有文档转换为 PDF,而不是从头开始创建新的 PDF。但这并不意味着没有用于创建或处理 PDF 文件的软件。

(必须分享一些关于 PDF 文件格式的内容?您可以在 PDF 文件格式新闻 部分发布您的发现。)

PDF 文件格式 - 简史

就时间线而言,关于 PDF 文件形成的快速浏览时间线如下:

1993 - Adobe Systems 免费提供 PDF 规范

2008 - PDF 于 2008 年 7 月 1 日作为开放标准发布,由国际标准化组织发布为 ISO 32000-1:2008。

2008 - Adobe 为制作、使用、销售和分发符合 PDF 标准的实施所必需的 Adobe 拥有的所有专利发布了 ISO 32000-1 格式免版税权利的公共专利许可。

PDF 的第一个版本被指定为 PDF 1.0,后来经过修订,直到 PDF 1.7。成为 ISO 32000-1 的 PDF 1.7 包括一些非标准化的专有技术,以及 Adobe XML Forms Architecture (XFA) 和 Acrobat 的 JavaScript 扩展。 2017 年 7 月 28 日,PDF 2.0(称为 ISO 32000-2:2017)发布,其中不包含任何非标准化技术。

PDF 文件格式规范

PDF 文件是一组字节,可以根据 PDF 规范定义的语法规则将其分组为标记。一次或多个标记被组合以形成更高级别的句法实体,主要是对象,它们是构建 PDF 文档的基本数据值。

PDF 文件的文件结构

PDF 文件内容在文件内按以下顺序排列。

|页眉 |身体 |交叉引用表 |预告片

PDF 文件头####

无论 PDF 版本如何,PDF 文件都以包含 PDF 的唯一标识符和格式版本的标题开头,例如 %PDF-1.x,其中 x 的范围为 1-7。

文件正文####

PDF 文件的正文由一系列表示文档内容的间接对象组成。如上所述,对象代表文档的组成部分,例如字体、页面和采样图像。从 PDF 1.5 开始,主体还可以包含对象流,每个对象流都包含一系列间接对象。

交叉引用表####

交叉引用表包含允许随机访问文件内的间接对象的信息,因此不需要读取整个文件来定位任何特定对象。该表应包含每个间接对象的一行条目,指定该对象在文件主体内的字节偏移量。 (从 PDF 1.5 开始,部分或全部交叉引用信息可能包含在交叉引用流中。

文件预告片####

PDF 文件的预告片使符合要求的读者能够快速找到交叉引用表和某些特殊对象。符合要求的读者应该从头开始阅读 PDF 文件。文件的最后一行应仅包含文件结束标记 %%EOF。前两行应按顺序包含关键字 startxref 和解码流中从文件开头到最后一个交叉引用部分中的外部参照关键字开头的字节偏移量。

PDF 对象###

PDF 文件包括以下几种不同类型的对象

  • 布尔值 - 表示条件真或假
  • 数字 - 整数和实数值
  • 字符串 - 包含括号内的字符
  • 名称 - 以前向 / 字符开头,例如 /ASomewhatLongerName 结果为 ASomewhatLongerName
  • 数组 - PDF 支持一维数组。可以通过使用数组作为嵌套元素来构造更高维度的数组
  • 字典 - 作为键值对的对象集合。它可以有零个条目。
  • Streams - 表示字节序列,它也可以是无限长度的
  • Null Object - 代表一个空值

可能还有其他对象,例如注释,它们以 % 符号引入并且可能包含 8 位字符。

间接对象###

PDF 文件中的任何对象都可以标记为间接对象。间接对象被赋予唯一的对象标识符,其他对象可以通过该标识符引用它。对这些的交叉引用保存在索引表中,并用主体后面的外部参照关键字进行标记,并给出每个间接对象从文件开始的字节偏移量。

线性和非线性 PDF 布局###

根据目标应用程序和其他因素,PDF 布局分为线性和非线性。

非线性 - 与线性 PDF 文件相比,非线性 PDF 文件使用更少的磁盘空间。文档的 PDF 页面分散在 PDF 文件中,这就是非线性文件比线性文件慢的原因。

线性 PDF - 针对在线 PDF 查看器,线性 PDF 文件的构造方式是它们以线性方式写入磁盘。这不需要浏览器插件在显示之前首先加载整个文档。

对象概述###

如前所述,PDF 正文是上述对象的集合。 PDF 主要基于 PostScript,没有 if 和 loop 命令等编程语言的控制功能。除了文档引用的任何文件、图形或字体之外,Postscript 代码发出的用于生成图形内容的命令也会被收集和标记化。所有这些内容都累积到一个文件中,从而产生组合的 PostScript 输出。

#### 文本 ####

PDF 中的文本由文本元素表示,这些文本元素实际上是用字体中的字形显示的。字形是一种图形形状,并受制于所有图形操作,例如坐标变换。由于文本在大多数页面描述中的重要性,PDF 提供了更高级的工具来方便有效地描述、选择和呈现字形。

便携式文档格式(英語:Portable Document Format,缩写:PDF)是一種用獨立於應用程序、硬件、操作系統的方式呈現文檔的文件格式。[2]每個PDF文件包含固定布局的平面文檔的完整描述,包括文本、字形、圖形及其他需要顯示的信息。PDF文件除平面的文本和图形外,还可能包括逻辑结构元素,注释、表单、图层、富媒体(包括视频内容)之类的交互元素,使用U3D或PRC的三维对象,以及多种其他数据内容。PDF规范还提供了启用这些功能时所需的加密功能、数字签名、文档附件和元数据等。PDF源自1991年Adobe Systems共同創始人約翰·沃諾克發起的“Camelot專案”。[3]

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]

技术基础[编辑]

PDF主要由三項技術組成:

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

PostScript[编辑]

PostScript是一种运行于直譯器以生成图像的页面描述语言,一个需要大量资源的进程。不仅能处理图形,也具有ifloop之类命令的标准编程语言特性。PDF很大程度上基于PostScript,但做了简化,以移除像这样的流控制特性,还保持着lineto之类的图形命令。

通常,类PostScript的PDF代码产生于PostScript源文件。以PostScript代码输出的图形命令被收集并标记;其中文档所引用的任何文件图像或字体也被收集,然后每一件都被压缩成单个文件。由此,整个的PostScript领域(字体、输出、计量)得以保持完整。

作为一个文档格式,PDF相比较于PostScript有一些优势:

  • PDF包含已标记和解析的PostScript源代码,以在修改PDF页面描述中的项与修改所产生的页面造型之间直接保持一致。
  • PDF(自1.4版)支持真图形透明度;PostScript不支持。

技术概括[编辑]

文件结构[编辑]

PDF文件是COS("Carousel" Object Structure,Carousel对象结构)格式的子集。COS也伴随着FDF文件。[14]COS树文件主要由对象组成,其中有八种类型:[15]

对象可以是直接(嵌入其他对象)或非直接的。直接对象以对象号及代号编号。称为xref表的索引表赋予每个对象从文件开头起的字节偏移量。[16]这一设计允许有效的隨機存取到文件中的对象,还允许无需重写整个文件(增量更新)即可做出小的改动。从PDF 1.5版开始,非直接对象也可位于称为“对象流”的字串流中。这一增加文件大小的技术有大量小的非直接对象,并且对置标PDF特别有用。

PDF文件有两种输出方式:非线性(非“优化”)和线性(“优化”)。非线性PDF文件比线性的占用更小的硬盘空间,即使因为一部分的数据要求文档中的集合页面通过PDF文件分散开而访问更慢。线性PDF文件(也称“优化”或“web优化”PDF文件)以使得网页浏览器插件无需等待下载整个文件来阅读的方式构建,自从它们以线性方式写入硬盘(如同页面顺序)开始。[17]PDF文件可用Adobe Acrobat软件或QPDF优化。

图像模式[编辑]

图形在PDF中呈现的基本设计是以非常类似于PostScript中的方式,除了PDF 1.4增添的透明度的使用。

矢量图[编辑]

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有特别的意义:

这些字体有时称作Base 14字体。[18]这些字体或有相同度量的合适的替代字体,必须能用在所有PDF阅读器上,而且不必嵌入PDF。[19]PDF查看器必须掌握这些字体度量。否则字体如果没有嵌入PDF就可能会被替换。

编码[编辑]

文本字符串中,字符用以编码映射字形于当前字体的字符代码(整数)显示。预定义的编码有多种,包括WinAnsi、MacRoman,以及大量东亚语言编码,而且字体可以有自己的编码。(即使WinAnsi和MacRoman编码取自Windows和Macintosh操作系统中历史上的专有编码,用这类编码的内容在任何平台上都运行的好。)PDF可以指定可以使用的预定义的编码、字体内置编码,或者提供预定义或内置编码的查询表(不对TrueType字体推荐)。[20]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保密。此后它们被公布。[21]

PDF规格中透明度组的概念独立于Adobe Illustrator之类的应用中已有的“组”或“层”的概念。那些反映对象之上的逻辑关系的分组在编辑那些对象的时候有意义,但不是图像模型的一部分。

交互式元素[编辑]

PDF文件或许包含注释、表单、视频和Flash动画之类的交互式元素。

交互式表单是一个添加表单到PDF文件格式的机制。

PDF当前支持用于整合数据和PDF表单的两种不同的办法。两种格式今天并存于PDF规格:[22][23][24][25]

  • AcroForms(又叫Acrobat forms)引入PDF 1.2格式规格并包含于所有后来的PDF规格。
  • 的表单,引入PDF 1.5格式规格。XFA规格没有包含于PDF规格,仅仅作为可选特性参考。Adobe XFA表单不与AcroForms兼容。[26]

AcroForms[编辑]

AcroForms于PDF 1.2格式被引入。AcroForms准许使用对象(如文本框、选择钮等)及一些代码(如JavaScript)。

在标准PDF动作类型之外,交互式形式(AcroForms)支持提交、重置和导入数据。“提交”动作传送所选表单字段和值的名称给指定的统一资源定为符(URL)。交互式表单字段名称和值或许会被以任意格式提交(取决于输出格式、提交的PDF和XFDF旗标的设置):[22]

  • 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中定义)
表单数据格式(FDF)[编辑]

表单数据格式(Forms Data Format,FDF)基于PDF,使用同样的句法和基本上一样的文件结构,但比PDF简单,自从FDF文档的主体由只有一个要求的对象组成开始。表单数据格式定义于PDF规格(自PDF 1.2起)。表单数据格式可在表单数据到服务器、接收响应和组合到交互式表单的时候被使用。还可以被用来导出表单数据到能被导回到相应的PDF交互式表单的单独的文件。从PDF 1.3开始,FDF可被用来定义用于从所应用的PDF文档分开的注释的容器。FDF通常封装X.509证书之类的信息、要求证书、设置目录、设置时间戳服务器和为网络传输嵌入PDF文件。[29]FDF使用MIME内容类型application/vnd.fdf、文件扩展名.fdf,并在Mac OS使用文件类型'FDF'。[22]导入和导出独立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)。[28]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标准。[32]这个标准是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》,有多个版本。[33]XFA规格没有包括在ISO 32000-1 PDF 1.7并仅仅作为由Adobe创建的外部专有规格引用。在ISO 32000-2(PDF 2.0)当中被弃用。

Adobe XFA表单不与AcroForms兼容。Adobe Reader包含使用XFA表单的“禁用特性”,仅在打开只来自Adobe的可行的技术创建的PDF文档时激活。[34][35]XFA Forms不兼容于Adobe Reader 6以前的版本。

当PDF和XFA结合在一起,结果是任意页面中的XFA表单覆盖了PDF背景。这一架构有时被提作XFAF(XFA Foreground,XFA前景)。替代方法是直接在XFA(不用PDF,或者只用带有PDF标记的最小构造XFA的容器的“外挂PDF”,或用静态XFA表单的预渲染描述作为PDF)展开所有表单,包括样板文件。这有时被称为全XFA。[36]

PDF 1.5开始,可变文本字段的文本内容,以及标记注解可能包含格式信息(样式信息)。这些富文本字符串是符合XML表单架构规格2.02(本身是XHTML 1.0规格的子集)定义的富文本惯例的XML文档,扩展了CSS2样式属性中受限的设置。[22]PDF 1.6中,PDF支持XML表单架构(XFA)规格2.2定义的富文本元素和属性。PDF 1.7中,PDF支持XML表单架构(XFA)规格2.4定义的富文本元素和属性。[22]

多数PDF处理器不处理XFA内容。生成外挂PDF的时候会被建议包含于PDF标记的一个简单的单页PDF图像显示警告(如:“为了查看本文档的全部内容,你需要新版PDF查看器”等。)能渲染XFA内容的PDF处理器应该不现实警示页面图像或者以动态表单内容迅速替换。[37]带有一些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定义了一组标准结构型別及屬性,允许页面内容(文本、图形和图片)之後被提取並再利用於其他用途。[38]

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

安全和签名[编辑]

一份PDF文件可能以用于验证的担保或者数字签名加密。

即使没有移除密码,许多免费或开源PDF阅读器忽略权限“保护”并允许用户打印或者做文本摘要的复制,就像文档没被密码保护限制一样。

一些解决方案像Adobe的LiveCycle Rights Management更强化信息权利管理的方式,不仅能限制谁能打开文档,而且以标准的安全处理程序做不到的方式可靠的执行权限。

使用权[编辑]

从PDF 1.5起,使用权(UR)签名用来启用在一些PDF查看器应用中不是默认的附加的交互式特性。这一签名用来验证由真实的授权机构赋予的许可。例如,它可以允许用户:[22]

  • 保存伴有修订表单和/或注释数据的PDF文档
  • 从FDF、XFDF和文本(CSV/TSV)格式中的数据文件导入
  • 从FDF和XFDF格式中的数据文件导出
  • 从数据提交
  • 从命名的页面模板具体呈现新页面
  • 应用一个数码签名到已有的数码签名表单字段
  • 创建、删除、修正、复制、导入、导出注释

例如,Adobe Systems在Adobe Reader中授权启用附加特性,使用公钥密码学。Adobe Reader使用从一个Adobe授权的权威认证的验证那个签名。PDF 1.5规格宣称其他PDF阅读器应用可以为他们自己的目的自由使用这一相同机制。[22]

文件附件[编辑]

PDF文件可以有文档级和页面级的文件附件,读者可访问并打开或存储于本地的文件系统。PDF附件可作为示例用pdftk加到已有的PDF文件。Adobe Reader提供对附件的支持,而且基于Poppler的阅读器如Evince或Okular也有对文档级附件的支持。

元数据[编辑]

PDF文件可包含两种类型的元数据。[41]第一种是文档信息字典,一套像作者、标题、主题、创建及更新日期的关键字/值字段。这存储于可选的文件尾部。有一小组字段是有定义的,而且如果有需要,可以用附加的文本字段扩充。

后来在PDF 1.4中,对元数据流的支持被加入,用可扩展元数据平台(XMP)来添加像在其他文件格式那样的基于XML标准的可扩展的元数据。这允许元数据附加到文档中的任何字串流,诸如关于嵌入式插图的说明,以及整个文档(附加到文档目录),使用可扩展的纲要。

相关技术[编辑]

Mars[编辑]

Adobe曾探索基于XML的下一代PDF,代号Mars。[42]

Mars的图形元素的格式有时简单地描述为SVG,[43]但根据2007年11月的0.8版草案规格(§3 Mars SVG Support)这一格式实际上仅仅是接近于SVG:它同时包含SVG新增和移除的部分,因此一般不可被标准SVG工具查看或创建:一些东西在SVG查看器和Mars查看器之间看起来明显不同。

Adobe Systems于2008年停止开发Mars。[44]

技术问题[编辑]

扫描的文档[编辑]

由扫描仪硬拷贝文档创建的PDF文件包含原始文本没有由相同的文档直接创建的PDF文件那样相同的架构。扫描的文档原本地包含了文档的图片,没有关于文本的信息。只要用户可以看到它只是另一个PDF文件,带有从其他任意地方来的不能区分的名称和扩展名;好的扫描仪或许会精确地视作与原生的PDF文件相同,即使是视觉上质量很差的文件,常常带有扭曲的页面,给出了其本性。然而,文件大小会明显不同,而且不能搜索文本。对于精确质量的扫描可以用带光学字符识别(OCR)的合适的软件识别文档中的文本,并嵌入文档中而使其可以检索,取决于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激活。[57]

随着时间推移,新的漏洞在Adobe Reader的多个版本被发现,[58]促使企业发出安全性修复。其他PDF阅读器也容易受到影响。一个恶化的因素是PDF阅读器会被配置在网页嵌入PDF时候自动启动,为攻击带来了载体。如果恶意的网页包含一份利用PDF的漏洞感染的PDF文件,系统会无法抵抗,即使浏览器是安全的。其中一些漏洞是由于PDF标准允许PDF文档用JavaScript脚本指令的结果。在PDF阅读器中禁止执行JavaScript有助于缓解那些未来的漏洞,即使这不阻止PDF查看器其他部分的漏洞。安全专家称JavaScript对于PDF阅读器来说不是基本的,而且出于禁止JavaScript的安全保障胜过任何造成的兼容性问题。[59]阻止PDF文件漏洞的一种方式是有本地或网络服务能在阅读前把文件转换成其他格式。[60]

2010年3月30日安全专家Didier Stevens报告Adobe Reader和福昕阅读器有如果用户经询问允许启动时运行恶意可执行文件的漏洞。[61]

使用限制和显示[编辑]

PDF可能会被加密,以致查看或编辑内容时会要求输入密码。PDF参考书同时定义40位和128位加密,都运用RC4和MD5的复杂系统。PDF参考书还定义第三方可以制定他们自己的PDF加密系统的方式。

PDF文件或许还包含嵌入的DRM限制,提供限制复制、编辑或打印的进一步控制。复制、编辑或打印的限制取决于阅读软件遵循他们,因此他们提供的安全机制是有限的。

PDF参考书有面向最终用户概览的技术细节。[62]就像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”。[63]

Adobe通过LiveCycle安全服务器提供针对特定文档设置安全策略的方法。这可以包括要求用户认证并限制文档可被离线打开的时候可以被访问或者载入的时期。PDF文档一旦被绑定到策略服务器和指定策略,这一策略可以被所有者更改或撤销。这一策略控制文档,否则就是“在自然状态下”。每个文档打开或关闭事件也可以被策略服务器追踪。策略服务器可以由个人设置,或Adobe通过Adobe在线服务提供公共服务。和其他DRM形式一样,依附这些策略和限制有可能会,也有可能不会被阅读器软件执行。

默认的显示设置[编辑]

PDF文档可以包含显示设置,包括页面显示输出和缩放级别。打开文档的时候Adobe Reader用这些设置去替换用户的默认设置。[64]免费的Adobe Reader不能移除这类限制。

PDF文件通常混合了矢量图形、文本和位图。PDF的基本内容包括:

  • 文本存储为内容字符串(就是不是文本本身)
  • 由图形和线条组成的用于说明和设计的矢量图形
  • 由相片和其他类型的图片组成的位图

在近期PDF标准修订中,PDF文档还支持链接(文档内部或网页)、表单、JavaScript(可通过Acrobat 3.0的插件启用),或者其他任意类型的能用插件控制的可嵌入内容。

PDF 1.6支持互动式3D文档嵌入PDF——3D绘图可用U3D或PRC及其他多种格式嵌入。[65][66]

在电脑屏幕上看起来相似的两个PDF文件有可能大小不同。例如,一个高分辨率位图比低分辨率的占更多的存储空间。通常更高的分辨率更适宜打印文档而不是显示于屏幕。其他可能影响文件大小的可能有嵌入全部字体,尤其是东亚字体,以及将文字存为图片。

PDF通常免费提供,而且许多版本可以从多个来源获得。

有许多软件选项用来创建PDF,包括内建于Mac OS X及多数Linux发行版、LibreOffice、Microsoft Office 2016、[67]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[68]的Adobe PDF排印引擎[69]与出自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 识别、注释、表单预备、合并,数字签名等十分完善的功能[70]

Serif PagePlus可打开、编辑和保存已有的PDF文档,以及软件包中创建的文档的发布。

Microsoft Office Word也支援打开、编辑和保存已有的PDF文档的編輯功能。

Enfocus PitStop Pro,Acrobat的插件,允许PDF文件的手动和自动编辑,[71]同时免费的Enfocus Browser可以使编辑PDF的低级别架构成为可能。[72]

大多数的 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发布了一个有同样兼容性的更新。[73]

爱克发-吉华1997年推介并出售Apogee,第一个基于PDF的印前工作流系统。

许多商业的胶印机接受递交发布就绪的PDF文件作为印刷来源,特别是PDF/X-1a子集和相同的变种。[74]发布就绪的PDF文件的提交是对接收已收集本地文件工作的不确定性需求的替代。

一些桌面打印机也支持直接打印PDF,可以不用额外的辅助生成PDF数据。目前,所有PDF兼容打印机也支持PostScript,但多数PostScript打印机不直接支持PDF打印[來源請求]。

自由软件基金会曾认为他们的一个高优先级计划“提供自由、高质量和全功能的一组软件库及程序实现PDF文件格式及ISO 32000标准的相关技术”。[75][76]而在2011年,GNU PDF计划从“高优先级”列表中被移除,因为Poppler库的完善,[77]激励了像Evince之类的应用与GNOME桌面环境的广泛应用。Poppler基于Xpdf[78][79]代码。PDF軟體列表亦列出可用的商业开发用软件库。

一个名为 Devon Govett (页面存档备份,存于互联网档案馆) 的 Adobe 员工在 GitHub 上开源了一款用于 JavaScript 的 PDF 操作库 PDFKit (页面存档备份,存于互联网档案馆)

Apple 开发者早期使用 Quartz 的 CGPDFDocument (页面存档备份,存于互联网档案馆) 来绘制一个 PDF 文档,但是因为使用较为底层的图形库绘制 PDF 文档和查看十分麻烦,因此在 2017 年的 WWDC 大会上 Apple 引进了 PDFKit (页面存档备份,存于互联网档案馆) 来让开发者在 Apple 产品的操作系统上让自己的 App 支持绘制,查看,标注 PDF 等等功能[81]

什么是PDF文件?

Adobe PDF文件便携式文档格式文件的缩写。 它们当今最常用的文件类型之一。 如果你曾经从网上下载过可打印的表单或文档,很有可能那一个PDF文件。 每当你看到以.pdf结尾的文件时,这意味着它一个PDF文件。

如何打开PDF file?

右键点击PDF文件,选择"打开方式"。 选择程序列表中的"Adobe Reader"。 如果Adobe Reader不在列表中,那么你需要浏览并查看计算机中的Adobe Reader程序。

如何将PDF文件合并?

创建合并的PDF.
在Acrobat 中,选择工具> 合并文件。 ... .
将文件或电子邮件直接拖放到“合并文件”界面中。 ... .
根据需要,执行以下任一操作: ... .
单击选项,然后为转换的文件选择一个文件大小选项: ... .
在“选项”对话框中,根据需要指定转换设置,然后单击“确定”。.
当您排列完页面后,单击合并。.

什么软件可以打开PDF?

制作PDF用什么软件PDF格式文件是美国Adobe公司推出的特殊文本格式。 如果需要制作的话,建议安装Adobe Acrobat系列软件(注意不是Reader系列,后者只能看PDF格式书本而不能制作)。 具体使用方法很简单,安装好Adobe Acrobat后在Word里直接打印成PDF文档就可以了。