PDF包含8种基本的对象类型:布尔值,整型和实数,字符串,名称,数组,字典,流,null对象。
1,布尔对象,布尔对象表示真和假的逻辑值。显示为关键字true和false。
2,数字对象,PDF提供了两种类型的数字对象:整型和实数。整数对象表示数学上的整数,书写为一个或多个十进制数,可选择在前面添加一个符号,示例:123,4123,+19,-98,0。实数对象表示数学上的实数,书写为一个或多个带有可选的正负号,以及一个前导,结尾或嵌入的句点(小数点)的十进制数,示例:34.5,-3.63,+123.6,4.,-.002,0.0。
3,字符串对象,包含0个或多个字节。()表示文字字符串,<>表示十六进制数据,示例:(hello world),<1h78ff>。
4,名称对象,是一个原子符号,使用除null对象外的任何字符序列唯一定义。/应用于引出一个名称,是前缀,示例:/Type。
5,数组对象,是一种一维对象集合,元素可以是异构的,数组的元素可以是数字,字符串,字典或任何其他对象(包括其他数组)的任意组合,示例:[5.4 false /example (hello)]。PDF仅直接支持一维数组。更高维度的数组可使用数组作为数组的元素来构造,可以嵌套到任意维度。
6,字典对象,是一个包含对象对(键值对,字典的条目)的关联表。键应是一个名称对象,值可以是任意类型的对象,甚至可以是一个字典。同一字典中的多个条目不应具有相同的键。字典应写为包含在双尖括号(<<...>>)内,示例:<</Type /Example /Subtype 0.01>>。
7,流对象,是一个字节序列,没有长度限制。流应包含一个字典,后面紧跟由关键字stream和endstream包围起来的0个或多个字节,示例:dictionary stream ...Zero ro more bytes... endstream。所有流都应是间接对象(见附一),流字典应是直接对象。
8,NULL 对象,类型和值不等于任何其他对象,应只有一个null类型的对象,使用关键字null表示。
附一:间接对象:PDF文件中的任何对象都可以标记为间接对象,为对象提供了唯一的对象标识符,其他对象可以通过此标识符引用它。对象标识符包含两部分:一个正整数对象编号和一个非负整数代号,示例:12 0 obj (hello) endobj,对象编号12,代号0,值 hello。