什么是PDF文件? |知识库

介绍

正如您从有关 “ PDLS”的文章中已经知道的那样,PDF是一种静态页面描述语言,具有严格的不变结构。

PDF是最受欢迎的页面描述语言之一,由于Adobe的开发人员为其规范添加了各种各样的功能。此外,Adobe还为人们提供了能够在文档中实现这些功能的工具。本文是对PDF的语法,结构和特征的简要回顾。

什么是PDF文件?

开发PDF或缩写的便携式文档格式的最初目标是创建一种文档格式,该格式满足了数字文档互换在独立和独立的环境中的众多要求。这些要求包括交互式视图,高性能导航,低磁盘空间职业,文档共同工作,对不同媒体内容的支持,加密,签名,形式创建,演示等。尽管最初的意图是为企业提供用于数字文档互换的详尽格式,但较晚的规范也添加了高质量的打印功能。

PDF文件的语法

PDF的成像模型来自PostScript的模型,还使用1-2个字符,长运算符以及AI格式,并且具有后fix BNF语法,所有必要的操作数都在操作员面前。

operand1...operandm operator

除操作员长度外,PDF和PostScript操作员之间还有一些差异。在PDF中,所有必要的操作数必须先于运算符,而PostScript操作数则是从PostScript堆栈获得的。在PDF中,操作员不会返回结果,因为它可以在Postscript中。 PDF操作员执行某些操作来撰写页面,例如绘制图形或文本或在图形环境中设置某些属性。 在Postscript中,操作员完成了所有工作。

通常,大多数PDF文件内容都被烟编码压缩,这样就是二进制。除了压缩PDF文件外,还可以加密以限制对文档内容的访问。因此,整个文件必须被视为二进制。只有在既不压缩也没有加密且不包含二进制内容(例如图像,声音,视频等)的情况下,才可以将其视为文字。

PDF规范对象

在PDF规范中,对象是类型的同义词,而在PostScript中,有类型可以是原始和复杂的,最后一个可以称为“对象”。 因此,PDF中的所有类型(简单或复杂)都是对象。 PDF语言由布尔值,整数,实数,名称,字符串,数组,字典和流组成。字符串可以采用文字或十六进制格式,如下所示。

( This is a string )
<4E6F762073686D6F7A206B6120706F702E>

literal format
hexadecimal format

阵列与方括号界定。它包括一个亚型矩形 - 带4个元素的数组。

字典将数据存储在键值对中,其中键是名称或字符串(对于名称字典),该值是对象或对象引用。它包含在双角括号中。字典具有a 类型字段,显示给定词典中存储的数据。

<< /Type /Example
  /Subtype /DictionaryExample
  /Version 0 . 01
  /IntegerItem 12
  /StringItem ( a string )
  /Subdictionary << /Item1 0 . 4
    /Item2 true
    /LastItem ( not ! )
    /VeryLastItem ( OK )
  >>
>>
endobj

对象可以是直接和间接的。间接对象​​是可以通过其ID从其他对象引用的对象。

PDF间接对象

流是通常包含二进制或编码数据的对象。它们是人类的可读性,并且没有限制。通常,PDF文件流包含压缩页面内容或图像或其他媒体。流对象由一个直接词典组成,该字典具有流的长度和用于编码流的过滤器的数组,并在关键字之后编码数据。

181 0 obj
  <<
    /Length 473 0 R
    /Subtype /Image
    /Width 2
    /Height 19
    /BitsPerComponent 8
    /ColorSpace /DeviceGray
    /Filter [/ASCII85Decode /FlateDecode]
  >>
stream
Gb"[2*s<F2i'/7_!,1%/hZ~>
endstream
endobj

PDF操作员

运算符是使页面图形的直接对象,正如我们前面提到的,由1-或2个字母的关键字表示。 PDF运营商有两种:

* 执行动作或设置图形状态的属性。

PDF operator

x y m
x y l
x1 y1 x2 y2 x3 y3 c
h
x y width height re
a b c d e f cm
S
s
f
F
W
font size Tf
charSpace Tc
q
Q
lineWidth w
lineCap J
font size Tf
charSpace Tc

Description

通过将当前点移动到坐标 (x, y) 来开始新的子路径
从当前点向点 (x, y) 附加一条直线段
向当前路径附加一条三次贝塞尔曲线
关闭当前子路径
向当前路径附加一个矩形
通过连接指定矩阵来修改当前变换矩阵
描边路径
相同但闭合的路径
填充路径
相同但闭合的路径
通过将当前剪切路径与当前路径相交来修改当前剪切路径
将文本字体设置为 font,并将文本字体大小设置为 size
将字符间距设置为 charSpace
将当前图形状态保存到图形状态堆栈
从图形状态堆栈恢复图形状态
在图形状态中设置线宽
在图形状态中设置线帽样式
将文本字体设置为 font,并将文本字体大小设置为 size
将字符间距设置为 charSpace

* grouping

PDF operator

BT...ET
BI...EI
BMC...EMC
BX...EX

Description

文本对象的开始和结束
图像对象的开始和结束
标记内容序列的开始和结束
兼容性部分的开始和结束

特殊的分组操作员是 bx … ex 。它们封闭了必须忽略未识别对象的页面内容部分。因此,它们等效于Ai %_ 伪委员会。

PDF文件结构

PDF文件具有四个强制性结构元素。

PDF文件结构

  1. 单行标题,撰写PDF语言的版本

%PDF-1.5

  1. 包含文档对象的主体。身体的结构将在本文的后面描述。

  2. 交叉引用表。它用于快速随机访问文档对象。从文件开始,它包含字节的偏移到对象的开头。

xref
0 6
0000000003 65535 f
0000000017 00000 n
0000000081 00000 n
0000000000 00007 f
0000000331 00000 n
0000000409 00000 n

  1. 预告片,指向最后一个交叉引用表,并包含跨引用表中的一定数量的对象, 文档的ID和引用:

trailer
  <<
    /Size 15
    /Root 2 0 R
    /Info 1 0 R
  >>
startxref
6224

每次更新文档后,都会添加一个新的交叉参考表和预告片。它将在文章后面进行描述。

文档结构

PDF文档具有类似树状的结构,其中根是目录词典。

PDF文档结构

目录中包含页面上的参考,说明子树,大纲子树和其他文档级别的子树和叶子节点。

2 0 obj
  << /Type /Catalog
    /Pages 3 0 R
    /Outlines 4 0 R
    /PageMode /UseOutlines
    /ViewerPreferences 5 0 R
    /OpenAction [6 0 R /Fit]
  >>
endobj

页面包含page-tree节点和页面叶节点的排序。一组页面的类似树状结构以及搜索算法允许在数千页上快速导航以找到所需的页面。

PDF页面内容流

页面字典包含在内容流上的参考,可以按照上图或未压缩的方式进行压缩。在最后一个情况下,我们将在人类可读文本中看到PDF运算符,如下图所示。

7 0 obj
  <<
    /Length 8 0 R
  >>
stream
1 0 0 1 0 0 cm
0 0 m
595 0 l
595 842 l
0 842 l
h
W
n
q
/Alpha1 gs
0 0 0 rg
0 0 0 RG
0 J
q
0.96593 0.25882 -0.25882 0.96593 0 0 cm
1 0 0 1 0 0.25882 cm
0.02 w
-0.96593 0 m
0 -0.25882 l
0 -0.25882 0 -0.25882 0 -0.25882 c
0.14294 -0.25882 0.25882 -0.14294 0.25882 0 c
0.25882 0.14294 0.14294 0.25882 0 0.25882 c
h
S
Q
endstream
endobj

除了一系列子节点(可以是页面或页面节点)页面外,字典还包含对资源词典的引用,依次是指字体,procsets,procsets,images(xobject),等等。

9 0 obj
  <<
    /ProcSet 10 0 R
    /XObject 11 0 R
    /Font 12 0 R
    /ExtGState 13 0 R
  >>
endobj

注释和其他子树在功能部分中随便提及

特征

PDF格式的图形可能性

对于大多数页面描述语言绘制图形和文本的可能性,都没有意义。我们只是说,受支持的字体和颜色空间的丰富性与后记相同。

Fonts

- Adobe Type 0
- Adobe Type 1
- Compact Fonts (CFF)
- Chameleon
- TrueType
- CID-keyed

Color spaces

- DeviceGray
- DeviceRGB
- DeviceCMYK
- DeviceN
- Separated colors
- Spot
- CIE-based

透明度

PDF支持透明度。

外部文件

任何媒体或文档文件都可以嵌入到PDF或从文档中转介。

超链接

PDF支持超链接。

选举和互动观点

PDF允许仅显示某些用法所需的部分及其外观并隐藏其他内容。例如,在导入具有层的Adobe Illustrator图形时,这对于在Adobe Illustrator中工作是必要的,但对于在Adobe Acrobat Reader中查看并不是必需的。选举视图的另一种情况可以是用不同语言编写的文章或为残疾用户代表,但保存在一个文档中。也可能有不同的用法变体:一种用于查看,设计和打印的视图。

PDF的互动视图包括能力:

注释是一种浮动框,其中包含一些注释、声音、视频或其他内容。

交互式导航

可以通过多种方式实现文档不同部分之间的导航:

通过视口移动和隐藏文档的某些部分是通过视口和导航节点字典实现的。

增量更新

PDF文档中所做的所有更改都将附加到文档中,而无需删除以前的内容。每次更改文档时,都会添加新的Xref(交叉引用表)和预告片。新的交叉引用表包含有关添加或删除对象以及上一个交叉参考表的引用。这种机制允许将最终文档内容放在一起,同时存储文档的先前状态。

表现

通过页面类似树的结构和有效的搜索算法提供了通过页面导航的高性能。但是,可以通过将重复的图形元素组合到一个对象,称为 form xobject 并在所有必要的地方使用一个对象来进一步增加。还有一种方法可以优化整个文档以获得高性能视图。它是线性化。最初发明了线性化,以有效查看Web访问的PDF文档。线性化的PDF文档仅读取,对此的任何更改都需要重复线性化。

文档对象之间导航的高性能是通过从文件开始时存储对象偏移的交叉引用表来实现的。

压缩

PDF文档的压缩(通常是平面编码)允许创建具有相对较低磁盘空间占用的大型文档。例如,包含758页的PDF规范文件,其中包含大纲,缩略图,图像和表格约为9 MB。

安全

可以对PDF文档进行加密,以便仅向某些用户提供差异化​​访问权限,并且可以签名。数字签名功能允许对用户的身份和文档的内容进行身份验证。数字签名与用户信息签名时绑定文档状态。数字签名可以以任何形式: 如果提供相应的签名处理程序,则从纯数学到视网膜扫描。

交互式形式

它用于从用户收集信息。交互式表单,或所谓的Acroforms 可以验证,格式化并将用户数据发送到服务器。

推介会

PDF中有几种表达方式:

媒体内容

图像,声音,电影剪辑和3D图形可以添加到PDF文档中。

提取数据

PDF允许添加某些标记,该标记为外部应用程序提供了提取必要数据的可能性。使用称为标记的PDF 的标记文档。

prepress支持

准备出版包括打印机的标记,颜色分离,输出意图和陷阱。

PDF文件的用途是什么?

PDF文档的主要应用是在不同环境中进行电子文档交换和查看。

如何制作PDF文件?

独立的Adobe Acrobat应用程序可以创建和编辑PDF文档。

如何打开PDF文件?

您可以在独立的Adobe Acrobat读取器应用程序或使用PDF插件的Google Chrome浏览器中打开并查看PDF文件。苏门答腊PDF,Foxit Reader或Free PDFReader等简单的实用程序也将为您提供帮助。另一种方法是在Google Drive上在线查看PDF。

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.