完整wordPDF 规范.docx
《完整wordPDF 规范.docx》由会员分享,可在线阅读,更多相关《完整wordPDF 规范.docx(148页珍藏版)》请在冰豆网上搜索。
完整wordPDF规范
PDF规范
第六版
Adobe®便携式文件格式
版本1。
7
2006年11月
Adobe系统公司
前言
第1章介绍
1.1关于本书
本书提供PDF文件格式的描述,主要面向直接创建PDF文件的PDF制作应用程序的开发人员.它还包含足够的信息,允许开发人员编写读取现有PDF文件并解释或修改其内容的PDF消费者应用程序。
虽然PDF规范与任何特定的软件实现无关,但通过描述典型应用程序处理方式,可以最好地解释一些PDF功能。
在这种情况下,本书使用Acrobat系列PDF查看器应用程序作为其模型。
(原型查看器是完全功能的Acrobat产品,而不是AdobeReader®产品)。
附录C讨论了Acrobat查看器应用程序中的一些实施限制,但这些限制并不是文件格式本身的一部分。
附录H提供了兼容性和实现说明,描述了Acrobat查看器在遇到不了解的较新功能时的行为方式,并指定了Acrobat产品与本书中提供的规范不一致的领域。
PDF制作者和消费者应用程序的实施者可以使用此信息作为指导.
此版本的PDF规范介绍了1.7版本的PDF(见附录H中的实施说明1)。
在整本书中,PDF的特定版本的特定信息标有(PDF1.3)或(PDF1.4)等指标。
在该版本中,如此标记的特征可能是新的或基本上重新定义的.指定的功能(PDF1。
0)一般在以后的版本中被取代;除非另有说明,否则特定于其他版本的特征也被理解为在后续版本中可用。
(为特定PDF版本设计的PDF消费者应用程序通常忽略他们不认识的较新功能;附录H中的实现说明指出了异常。
)
注意:
在本版本中,消费者一词通常用于参考PDF处理应用程序;查看器保留用于实现与用户交互的功能的应用程序。
然而,这种区别并不总是很清楚,因为非交互式应用程序可能会处理表示交互功能的PDF文档(例如注释)中的对象。
本书的其余部分如下:
●第2章“概述”简要介绍了PDF的整体架构及其背后的设计注意事项,并将其与PostScript语言进行比较,并描述了它们共享的基础图像模型.
●第3章“语法”介绍了PDF在对象,文件和文档级别的语法。
它为后续章节提供了一个基础,它们描述了该信息如何被解释为页面描述,交互式导航辅助工具和应用程序级逻辑结构。
●第4章“图形”描述了用于描述PDF文档中页面外观的图形运算符。
●第5章“文本”讨论了PDF的特殊设施,用于以字体形式呈现文本,或者由字体定义的字形。
●第6章“渲染"考虑了与设备无关的内容描述如何与特定输出设备的特性相匹配.
●第7章“透明度”讨论了在PDF1.4中介绍的透明成像模型的操作,其中可以以不同程度的不透明度绘制对象,允许页面的原内容显示。
●第8章“交互功能”介绍了PDF的功能,允许用户使用鼠标和键盘与屏幕上的文档交互。
●第9章“多媒体功能"介绍了支持嵌入和播放多媒体内容(包括视频,音乐和3D图形)的PDF功能。
●第10章“文档交换"显示了PDF文档如何合并可用于应用程序之间的文档交换的更高级别的信息。
●附录A“运算符摘要”列出了用于描述PDF文档的可视内容的所有操作符.
●附录B“类型4函数运算符”总结了可在PostScript计算器函数中使用的PostScript运算符,该函数包含用PostScript语言的一小部分编写的代码。
●附录C“实施限制”描述了Acrobat查看器应用程序施加的典型大小和数量限制。
●附录D“字符集和编码"列出了假定在任何PDF消费者应用程序中预定义的字符集和编码。
●附录E“PDF名称注册表”讨论了由AdobeSystems为开发人员维护的注册表,其中包含PDF生成器或Acrobat插件扩展使用的私有名称和格式。
●附录F“线性化PDF”描述了一种特殊形式的PDF文件组织,旨在在网络环境中高效工作。
●附录G“PDF文件示例”介绍了几个示例,显示了实际PDF文件的结构,范围从包含最小单页文档的结果到显示PDF文件结构在多个修订版本中演变的结构。
●附录H“兼容性和实现说明”提供了Acrobat浏览器应用程序行为的详细信息,并描述了消费者应用程序如何处理包含他们无法识别的功能的PDF文件。
●附录I“对象杂凑的计算”详细描述了一种用于计算对象杂凑的算法(在第8。
7节“数字签名”中讨论过).
彩色板部分提供了一些PDF与颜色相关的特性的插图。
在“见第1版”的文本中引用本节的内容。
本书的结尾是参考文献和索引。
1.2PDF1.7功能简介
在PDF1。
7中介绍或修改了一些特性。
下面列出了最重要的添加内容,以及对这些添加内容的主要部分的引用:
1.2.13D图形
PDF1。
7引入了新功能,增加了PDF查看应用程序对3D图形外观和行为的控制:
●更多地控制3D图形的外观,而无需更改原始图稿,也不需要使用嵌入式JavaScript.3D图形的具体视图可以指定图形应如何呈现,着色,点亮和横截面.他们还可以指定应在视图中包含3D图形的哪些节点(三维区域),哪些节点应放置在视图中,以及它们是否应该是透明的。
这些特征可以显现出难以查看的几何区域。
●在3D图形的特定视图上放置标记注释的功能。
这可以确保适用于3D图形的标记随后可以相对于艺术作品整体和艺术作品中的各个元素而正确显示。
应用于3D图形的标记注释提供了一种确保从应用标记注释开始的图形没有更改的方法。
●控制3D图形激活时显示的用户界面和工具栏.
●控制关键帧动画的时间框架,重复和播放风格。
游戏风格是线性重复(如步行角色)和基于余弦的重复(如爆炸式收缩图像)。
1.2.2交互功能
标记注释的一些附加功能使它们更适合于技术通信和审查,或者用于法律环境.
协助技术交流的交互功能
标记注释的几个补充有助于技术沟通和审查:
●添加多义线和多边形标注注释的维度意图。
维度意图支持用户提供的维度信息与构成折线和多边形标注注释的线段的关联。
此功能与在PDF1。
6中为线标记注释引入的维度意图类似。
●为线,折线和多边形标注注释的维度指定单位和缩放的能力.该功能使用户可以测量文档中的距离,例如建筑图的宽度或3D横截面的直径。
●在3D图形的特定视图上放置标记注释的功能。
●锁定注释内容的功能。
在法律环境中使用的交互功能
标记注释的另外一个用于法律环境,特别是银行业务。
添加指定打印特性的新的查看器首选项设置,如纸张选择和处理,页面范围,副本和缩放。
当用户使用这些浏览器首选项设置打印PDF文档时,打印对话框将按照这些设置中的指定进行预先填充。
这种能力增强了PDF文档的打印预览功能,这可以使PDF文档更适合在法律环境中使用。
1.2。
3可访问性相关功能
TaggedPDF的增加标识了更多类型的页面内容的作用:
●识别非交互式PDF文档中表单域的角色的能力。
此更改标识按钮字段(按钮,复选框和单选按钮)和文本字段(填充或未填充)。
●提供与表结构相关联的表摘要的能力。
该功能可以帮助视障者了解表的目的和结构,而无需阅读该表中的内容.
●识别背景页面工件的能力,这对文档回流可能很重要.背景工件是对作者的原始内容的意义无贡献的对象的集合,例如侧栏或全页背景图像后面的彩色矩形。
这样的页面背景可能不与任何逻辑结构相关,但是它们可能在再现原始文档的外观方面是有用的.
●区分分页工件的能力:
水印、页眉和页脚。
1.2.4文件导航功能
对文档导航的添加指定了可移植集合的查看和组织特性,其中多个文件附件显示在一个窗口内。
可移植的集合用于显示、排序和搜索相关文档的集合,如电子邮件归档、照片收集和工程投标集。
1。
2。
5安全相关功能
PDF1.7引入的内容,增加了文档作者可以对数字签名和超出要求施加的控制。
PDF消费者应用程序必须满足:
●附加的数字签名约束,在签名应用时执行.这些约束包括优先杂凑算法,签名中使用的证书的撤销检查以及澄清其他参数解释的标志。
●关于签署时使用的证书的其他限制.这些约束包括必须存在于证书中的主题可分辨名称(DN)字典,必须存在于签名证书中的KeyUsage扩展名以及澄清指定证书约束的其他参数的解释的标志。
●在处理或显示PDF文档之前,可以指定要求处理程序来验证PDF消费者应用程序必须满足的某些要求.此功能提供了一种方法,确保与PDF文档的向后兼容性,PDF文档可能包含JavaScript段以验证要求.在添加此功能之前,JavaScript是执行此类需求检查的唯一方法。
该功能确保JavaScript段验证要求,或者指定的处理程序验证要求。
1.2.6一般功能
通过提供字符串和文件名的编码信息,PDF1.7的增加提供了更多的跨平台和跨应用程序稳定性:
●描述用于字符串的编码的字符串类型的说明。
在整个PDF引用中,字符串类型的任何用途都将替换为更具体的字符串类型之一。
此澄清不需要更改PDF消费者应用程序。
相反,它更清楚地了解每个PDF字符串条目支持的编码.当将PDF文档中的字符串与外部源(例如XML文档或3D图形)中的字符串进行比较时,这种理解可能尤为重要。
●使用Unicode指定文件名的功能,以及使用正在查看文档的平台的标准编码指定文件名。
此功能可以减少在不同平台或不同语言中编码的文件路径名称解码的问题。
1。
2.7PDF规范更改
此版本的“PDF规范”包含与新功能或附加功能无关的说明:
●所有混合模式的公式说明。
●嵌套目录条目或列表条目的TaggedPDF表示形式的说明。
1。
3相关文献
PDF和PostScript页面描述语言共享相同的底层Adobe成像模型。
可以在PDF和PostScript语言之间直接转换文档;当打印时,两个表示产生相同的输出。
然而,PostScript包括一个不存在于PDF中的通用编程语言框架。
PostScript语言参考是PostScript语言及其成像模型的综合参考。
PDF和PostScript程序支持的几种标准格式字体,包括AdobeType1,CFF(CompactFontFormat),TrueType,OpenType和CIDkeyed字体。
这些字体的PDF表现在本书中有说明。
然而,字体文件本身的规格是单独发布的,因为它们是高度专业化的,并且针对不同的用户群体会有不同.有各种Adobe文献说明了字体格式。
参考文献列出了这些文献,以及与PDF相关的其他文献和本书的内容。
1.4版权说明
Adobe拥有PDF规范中的版权.Adobe将强制执行其版权。
AdobePDF必须保留其PDF版权的原因是为了保持便携式文件格式标准的完整性,并确保公众可以区分便携式文档格式和电子文档的其他交换格式.然而,Adobe希望促进使用便携式文档格式来进行不同产品和应用程序之间的信息交换。
因此,Adobe以其版权的所有人授予复制,修改和分发书面规范中的任何示例代码的权限,以符合PDF规范的方式实施便携式文档格式所必需的程度。
1
Adobe系统公司及其子公司拥有涵盖PDF规范文献中披露的技术的多项专利。
PDF规范文献中的任何内容均不授予任何专利权.尽管如此,Adobe希望鼓励在各种设备和平台上实施PDF计算机文件格式,因此为全球的PDF实施者提供了一些免版税专利许可。
要查看这些许可证,请访问
1.该示例代码包括但不限于数字结构,操作符和PostScript语言功能定义的受版权保护的列表,在PDF参考,第五版,1。
6版,第1.5节(知识产权)中引用。
第2章概述
2.1图像模型
PDF的核心是它描述复杂图形和排版的外观的能力.通过使用Adobe成像模型实现此功能,该模型与PostScript页面描述语言中使用的高级别,与设备无关的表示法相同。
虽然应用程序理论上可以将任何页面描述为全分辨率像素阵列,但是生成的文件对于高分辨率设备来说将是庞大的,取决于设备的,并且是不切实际的。
高级成像模型使应用程序能够根据抽象图形元素而不是直接根据设备像素来描述包含文本、图形形状和采样图像的页面的外观。
这样的描述是经济的和设备独立的,并且可以用于在广泛的打印机、显示器和其他输出设备上产生高质量的输出。
2。
1。
1页面描述语言
在其他角色中,PDF使用页面描述语言,这是一种用于描述相对于成像模型的页面的图形外观的语言。
应用程序通过两阶段过程产生输出:
1.应用程序在页面描述语言中生成与设备无关的所需输出的描述。
2.控制特定输出设备的程序解释该描述并将其呈现在该设备上。
这两个阶段可以在不同的地方和不同的时间执行。
页面描述语言作为可打印或可显示文档的紧凑型设备独立传输和存储的交换标准。
2.1.2Adobe图像模型
Adobe成像模型是从图形艺术中借鉴的二维图形的简单而统一的视图。
在此模型中,“画刷"放置在选定区域的页面上:
●绘制的图形可以是字符形状(字形),几何形状,线条或采样图像的形式,例如照片的数字表示。
●画刷可能是彩色或黑色,白色或任何阴影灰色.它也可能采取重复模式(PDF1.2)的形式或颜色之间的平滑过渡色(PDF1。
3)。
●这些元素中的任何元素可以被剪切,使在它们被放置在页面上时,可以出现在其他形状内.
页面的内容流包含描述一系列图形对象的操作数和操作符。
PDF消费者应用程序维护一个隐含的当前页面,它累积绘画操作员创建的标记.最初,当前页面完全为空。
对于在内容流中遇到的每个图形对象,应用程序将标记放置在当前页面上,该代码替换或组合它们可能覆盖的任何先前标记.一旦页面完全组合,则在输出介质上呈现累积的标记并且当前页面被清除为空白。
PDF1。
3和早期版本使用一种不透明的成像模型,其中每一个新的图形对象被绘制在一个页面上,完全覆盖了这些位置上的原内容(受某些可选参数的影响,可能会修改这种行为;参见第4.5。
6节“套印控制”.不管是什么颜色的对象——白色、黑色、灰色或彩色-—都被放在页面上,就像用不透明的颜料涂在上面一样.PDF1。
4引入了一个透明的图像模型,在该模型中,在页面上绘制的对象不需要完全不透明.相反,新绘制的对象与页面的先前存在的内容相结合,产生的结果将对象的颜色和其背景根据其各自的不透明度特征组合起来。
透明成像模型在第7章中描述。
主要图形对象(包括其他)如下:
●路径对象由一系列连接的和断开连接的点、线和曲线组成,它们一起描述形状和它们的位置.它是通过对路径构建操作符的顺序应用而构建的,每一个都附加一个或多个新元素。
路径对象是由一个路径绘图操作符结束的,它以某种方式绘制页面上的路径.主要的路径绘制操作符是S(描边),它在路径上画一条线,f(填充)绘制路径的内部。
●文本对象由一个或多个符号形状组成,代表文本的字符。
字符的字形在一个叫做字体的单独的数据结构中被描述.像路径对象一样,文本对象可以被描边或填充。
●图像对象是样本值的矩形数组,每个值代表矩形内特定位置的颜色。
这些对象通常用来表示照片.
绘制图形需要各种参数,一些是显式的,另一些是隐式的。
隐式参数包括当前颜色、当前行宽、当前字体(字体和大小)以及其他许多参数.这些隐式参数组合在一起构成了图形状态;在图形状态中,有用于设置每个隐式参数值的操作符。
绘制图形时,调用当前生效的值。
图形状态中的一个额外的隐式参数会修改绘制图形对象的结果.当前的剪切路径概述了可以放置画刷的当前页面的区域.虽然可以在当前页面的任何位置放置标记,但只有落在当前剪切路径内的标记才会影响页面;那些落在外面的不会影响页面。
最初,当前的剪切路径包含页面的整个可成像区域。
它可以暂时被简化为由路径或文本对象定义的形状,或者多个这样的形状的交集。
随后放置的标记被限制在该边界内。
2.1.3光栅输出设备
Adobe图像模型的大部分功能源自它处理一般光栅类输出设备的能力.这些技术包括激光、点阵、喷墨打印机、数字成像器和光栅扫描显示器等技术.光栅输出设备的定义特性是,一个打印或显示的图像由一个矩形阵列(或光栅)组成,这些点被称为像素(图像元素),可以单独处理。
在典型的bilevel输出设备中,每个像素都可以是黑白的。
在某些设备上,像素可以设置为灰色或某种颜色的中间阴影。
设置单个像素颜色的能力使生成打印或显示输出成为可能,这些输出可以包括文本、任意图形形状和采样图像。
光栅输出设备的分辨率可以测量沿两个线性尺寸的每单位距离的像素数。
分辨率通常是水平和垂直,但不是一定的。
制造商对设备技术和价格/性能的权衡,产生了特有的分辨率范围:
●电脑显示器的分辨率相对较低,通常为每英寸75到110像素.
●点阵式打印机通常每英寸有100到250个像素.
●喷墨和激光扫描静电印刷技术实现了每英寸300至1400像素的中级分辨率。
●摄影技术允许每英寸2400像素以上的高分辨率。
更高的分辨率可以产生更好的质量和保真度,但成本更高。
随着技术的进步和计算成本的降低,产品逐渐演变为更高的分辨率。
2.1.4扫描转换
通过称为扫描转换的过程,在光栅输出设备上渲染抽象图形元素(例如线,圆,字符字形或采样图像)。
给定图形元素的数学描述,该过程确定要调整的像素以及为这些像素分配哪些值以在可用的设备分辨率下实现最忠实的再现.
页面上的像素可以由计算机内存中的像素值的二维数组表示。
对于其像素只能为黑色或白色的输出设备,单个位足以表示每个像素.对于可以再现灰度级或彩色的设备,需要每像素多个位。
注意:
虽然印刷或显示页面的最终表示在逻辑上是一个完整的像素阵列,但其在计算机存储器中的实际表示不需要由每个像素的一个存储单元组成。
一些实现使用其他表示,如显示列表。
Adobe成像模型经过精心设计,不依赖于光栅内存的任何特定表示.
对于要出现在页面上的每个图形元素,扫描转换器设置相应像素的值。
当页面描述的解释完成时,存储器中的像素值表示页面的外观.此时,光栅输出过程可以在打印页面或显示屏幕上呈现此表示(使其可见)。
扫描转换图形形状(如矩形或圆形)需要确定哪些设备像素位于形状内,并适当地设置其值(例如,为黑色)。
因为形状的边缘并不总是精确地落在像素之间的边界上,因此需要一些策略来决定如何沿边缘设置像素。
扫描转换表示文本字符的字形在概念上与扫描转换任意图形的形状相同。
然而,字符字形对可读性要求更加敏感,并且必须满足更严格的客观和主观质量测量。
在双层设备上渲染灰度元素通过称为半色调的技术来实现.根据某些图案将像素阵列分成小簇(称为半色调屏)。
在每个集群中,一些像素被设置为黑色,而其他像素被设置为与页面上该位置所需的灰度级成比例的白色。
当从足够的距离观察时,各个点变得不可察觉,感觉到的结果是灰色阴影.这使得二级光栅输出设备能够重现灰度,并近似诸如照片的自然图像。
一些彩色设备使用类似的技术。
2.2其他通用特性
本节介绍PDF的除了成像模型之外的其它需要注意的通用特性。
2。
2。
1可移植性
PDF文件被表示为8位二进制字节的序列.PDF文件被设计成可移植到所有平台和操作系统。
二进制表示的目的是直接生成、传输和使用,而不需要在本机字符集、行尾表示或其他平台上使用的其他约定之间进行转换.
任何PDF文件也可以以只使用7位ASCII(美国信息交换标准编码)字符编码的形式表示。
这对于展示的目的很有用,就像在这本书里一样。
但是,这种表示并不推荐用于实际使用,因为它比普通的二进制表示效率低。
不管使用哪种表示,PDF文件都必须作为二进制文件传输和存储,而不是作为文本文件。
无意的更改,例如在文本结束的约定之间的转换,将损坏该文件,并可能使其无法使用。
2.2。
2压缩
为了减少文件大小,PDF支持许多种行业标准压缩过滤器:
●JPEG和(PDF1。
5)JPEG2000彩色和灰度图像压缩.
●CCITT(组3或组4),运行长度和(在PDF1.4)JBIG2单色图像压缩。
●LZW(Lempel—Ziv—Welch)和(从PDF1.2开始)Flate压缩,文本,图形和图像的压缩。
使用JPEG压缩,颜色和灰度图像可以压缩10倍或更多.对单色图像的有效压缩取决于所使用的压缩过滤器和图像的属性,但降低2:
1到8:
1是常见的(或20:
1至50:
1,这是JBIG2压缩的一页图片的图像).内容流的LZW或Flate压缩描述了文档中所有其他文本和图形的压缩比,约为2:
1。
所有这些压缩过滤器都产生二进制数据,如果需要一个7位的ASCII表示,则可以进一步转换为ASCIIbase-85编码。
2.2。
3字体管理
在文档交换中,管理字体是一个基本的挑战。
通常,文档的接收者必须拥有与创建文档相同的字体。
如果一个不同的字体被替换,它的字符集、字形形状和指标可能与原来的字体不同.这种替代可以产生意想不到的不需要的结果,比如文本的行延伸到边缘或与图形重叠。
PDF提供了处理字体管理的各种方法:
●原始的字体程序可以嵌入在PDF文件中,这确保了最可预测和可靠的结果。
PDF支持各种字体格式,包括Type1、TrueType、OpenType和cid—keyed字体。
●为了节省空间,可以嵌入一个字体子集,只包含那些在文档中实际使用的字符的符号描述。
另外,Type1字体可以用一种特殊的紧凑格式表示。
●PDF规定了一组14种标准字体,可以在没有预先定义的情况下使用.这些包括三个拉丁文字体(Courier,Helvetica*和Times*)中的四个面,以及两个符号字体(Symbol和ITCZapfDingbats®)。
所有PDF消费应用程序都需要这些字体或具有相同指标的合适替代字体。
●PDF文件可以通过名称引用未嵌入PDF文件的字体。
在这种情况下,PDF的使用者可以在其环境中使用这些字体.这种方法受到上面提到的不确定性的影响.
●PDF文件包含其使用的每种字体的字体描述符。
字体描述符包括字体度量和样式信息,使得应用程序能够在必要时选择或合成合适的替代字体.虽然字形的形状与预期的形状不同,但它们的位置是准确的。
字体管理主要关注生成文本的正确外观,即字形的形状和位置。
然而,PDF应用程序有时需要提取文本的含义,以某些标准信息编码(如Unicode)表示.在某些情况下,可以从用于表示PDF文件中的文本的编码推导出此信息。
否则,PDF制作应用程序应通过包含特殊对象ToUnicodeCMap来明确指定映射。
2。
2.4单次传递文件生成
由于系统限制和效率考虑,可能需要或希望应用程序在单次传递中生成PDF文件。
例如,程序可能具有有限的可用内存或无法打开临时文件.因此,PDF支持单次传递生成文件。
虽然一些PDF对象必须以字节指定其长度,但是提供了一种机制,允许长度跟随PDF文件中的对象。
此外,在生成所有页面之后,文档中的页数等信息可以写入文件。
在单次传递中生成的PDF文件通常不是为了最有效的阅读而排序的,特别是在通过网络访问文件的内容时。
当生成要多次查看的PDF文件时,值得执行第二次传递来优化文件中发生的对象的顺序。
PDF指定了一个特定的文件组织,线性化PDF,它在附录F中列出.其他优化也是可能的,例如检测图形对象的重复序列,并将其折叠成只指定一次的共享序列。
2.2。
5随机访问
PDF文件应该被认为是一个数据结构的扁平表示,它包含可以以任意方式相互引用的对象集合。
在PDF文件中出现的对象顺序没有语义意义。
一般来说,应用程序应该根据对象的引用来处理PDF文件,而不是按顺序处理对象.这对于交互式文档查看或任何在PDF文件中的页面或其他对象被从序列中访问的应用程序尤其重要。
为了支持对单个对象的这种随机访问,每个PDF文件都包含一个交叉引用表,可用于定位和直接访问文件中的页面和其他重要对象。
交叉引用表存储在文件的末尾,允许在单次传递中生成PDF文件的应用程序可以轻松地存储它,而那些读取PDF文件的应用程序可以轻松地定