admin管理员组

文章数量:1568560

2024年7月19日发(作者:)

3.2.5 数组对象

数组对象是一个一维的按顺序排列的对象集合。不像数组在其他计算机语言中一样,pdf

数组可能是混杂的;也就是说,数组中的元素可以是数字、字符串、字典或者其他任何对象

包括数组本身的组合。

数组写在方括号内[]:[549 3.14 false (Ralph) /SomeName]

Pdf直接支持一维数组。任何深度的多维数组可以用数组作为数组中的元素来创建。

3.2.6 字典对象

字典对象是一种连接表(键值对)包含成对的对象,称之为字典中的条目。每一条的第

一个元素是关键字,第二个是值。关键字必须是一个姓名对象,值可以是任意对象。一个条

目如果它值是null,它相当于一个空条目。如果一个关键字在字典中出现一次以上,则它的

值是undefined。

字典对象用<<>>双尖括号包含起来:

<< /Type /Example

/Subtype /DictionaryExample

/Version 0.01

/IntegerItem 12

/StringItem (a string)

/Subdictionary << /Item1 0.4

/Item2 true

/LastItem (not!)

/VeryLastItem (OK )

>>

>>

字典对象是pdf文件的主要组成部分。它们常被用来收集和连接复杂对象的属性,例如

文件的字体或者页码,利用每个条目的关键字是不同的来查询值。它约定,Type条目描述

的是这个对象的种类。在一些情况下,Subtype条目用来更深入的区分一般类型的子目录。

种类和子种类条目的值总是一个姓名对象。例如,在字体字典中,Type条目的的值始终是

Font,然而Subtype条目的值可能是Type1,TrueType或者其他几个值。

Type条目的值几乎可以总是从内容中推断出来。操作符TF,是一个font对象;因此,

Type条目在字体字典中主要是作为文件编制和错误检查的信息。Type条目是不强制要求的

除非在描述中强调,在字典甚至私有数据中Type条目的值必须是这本书中定义的姓名或者

注册姓名;详见附录E。

3.2.7 流对象

一个流对象就像字符串对象一样,是一系列的字节。不同的是,pdf应用可以增值地读

取流对象,但是字符串对象必须完全的被读取。更进一步说,流对象可以是无限长的,而字

符串是受实施实现限制的。基于这个原因,很大的数据或者可能会变得很大的数据,例如图

片,页面描述等都以流对象来呈现。

一个流对象包括:一个dictionary和之后的stream、endstream之间的部分:

dictionary

stream

… Zero or more bytes…

Endstream

所有的流对象都必须是间接对象,同事流字典必须是直接对象。关键字stream必须跟

随在一个EOL(回车换行carriage return and a line feed或者换行a line feed)之后,不能仅仅

在回车之后。一系列字节放置在关键字stream和endstream之间;流字典区分字节中每一

个数的意义。推荐放置一个EOL在数据之后endstream之前;这个标记不被包含在流的长度

之中。

可选择的是,从pdf1.2开始,字节流可以被放置在一个外部文件中,流字典来说明这

些文件,同事stream和endstream之间的字节都会被忽略。详见附录H。

如果不限制反对单独使用回车在stream之后,就不能区分一个使用回车作为EOL记号

的流对象并且有一个换行符是数据的第一个字节和使用回车换行作为EOL记号的流对象。

表3.4列出了全部流字典中常见的条目;某些流对象的类型具有其他附加的字典条目,

用来指明这些流对象的描述在什么地方。可选择的条目把过滤器视为指明在使用前怎样转换

流对象中的数据。过滤器在3.3节中有详细介绍。

流对象的长度extent

每一个流字典有一个长度条目指明pdf文件有多少字节用来作为流数据。(如果流对象

有过滤器的话,长度条目指的是编码长度的数字字节)另外,很多过滤器被定义是为了让数

字有自我限制;也就是说他们使用编码规划,其中有明确的EOD标记限制数据长度。最终,

流对象被用来呈现很多长度属性可以被推断出来的对象。所有的这些限制必须是一致的。

例如,一张10行20列的图片,使用单独颜色组成,每个组成部分都是8位,需要200

字节的图像数据。如果这个流使用了过滤器,这里就必须足够的字节来编码pdf文件中数据

来提供200字节。如果设定的长度值太小,如果一个明确的EOD标记出现的太早,或者解

码数据不是200字节,都会出错。

如果一个流对象包含太多数据也会出错,例外情况是有一个额外的EOL标记在

endstream之前。

表3.4 所有流字典中常见条目

Key Type Value

Length

Filter

DecodeParms

F

Integer

Name or array

Dictionary or array

文件说明

必须的,stream和endsteam

之间的所有字节数

可选的,处理数据使用的

filter的名字

可选的,参数/数组字典,过

滤器参数字典

可选的,文件包含流数据。如

果有这个条目,stream和

endstream之间的数据会被忽

本文标签: 对象字典条目