本文转自:https://blog.csdn.net/u012632138/article/details/80885246
说明:
PDF支持串和文本串。从PDF 1.7开始,串类型被引申定义为了PDFDocEncoding串, ASCII 串,字节串(byte string).这个引申的定义影响着用串来进行的字符,字形的编码。
目标:
掌握并能使用通用数据结构。
通用数据结构 Common Data Structures
一、串类型 String Types
string
PDF1.6及以前的版本,它可以用于表现任何文本串无法表现的串。从PDF 1.7开始被进一步分为:PDFDocEncoded string, ASCII string,和 byte string。
text string
可读的字符,例如文本标注,bookmark的名称,article名称,文档信息等。它些字符既可用一个字节带有符标记的可以是PDFDocEncodeing或可以用UTF-16BE编码。
PDFDocEncoded string
用于字符或字型单字节表示,使用PDFDocEncoding编码。
ASCII string
用一个字节来表现字符的ASII编码。
byte string用于描述二进制数据。每个字节8位。它用于表示编码未知的字符或字形。它用于表示像MD5值,签名证书,Web Capture identification值等。
二、Dates
(D:YYYYMMDDHHmmSSOHH’mm’)
YYYY: 年
MM: 月
DD: 日
HH: 小时
mm: 分钟
SS: 秒
O: 时区(+,-,Z)
HH’ 和UI时间差的小时数绝对值
mm’ 和UI时间差的分钟数绝对值
HH 和mm 后的引号是语法的一部分。年份后的所有域均为可选项。(称谓D:,尽管也是可选项,但建议使用。)MM 和 DD的缺省值均为01;其它的数字域缺省值都为0。加号(+)作为O域的值,表示本地时间比UT时间慢,而减号(−)表示本地时间比UT时间快,字符Z表示本地时间与UT时间相同。如果UT信息被指定,那么UT与指定的时间关系为未知。不管是否指定时区,日期必需以本地时间指定。
比如,1998年12月23日,美国太平洋标准时间下午7:52,用串表示如下:
D:199812231952−08'00'
三、Rectangles
[llx, lly, urx, ury]
llx: lower-left x
lly: lower-left y
urx: uper-right x
ury: uper-right Y
四、Name Trees
Name tree提供了类型于项和值的映射的功能。 Name tree和dictionary 有以下不同点:
1)字典中的关键字不同,字典中的关键字是名称对象,而在名称树型结构中却是串。
2)关键字按顺序排列。
3)与关键字相连接的值可以是任何类型的对象。流对象需要由间接对象引用指定。尽管不作要求,但是建议字典,数组,和串对象由间接引用指定,其它PDF对象(空值,编号,布尔,和名称)由直接对象指定。
4)数据结构可以表示一个“关键字-值”配对的任意大的集合,它可以有效的查询无需要求读取整篇PDF文件的数据结构。(相比之下,字典受它所包含的选项编号执行限制制约。
五、Number Trees
类似Name Trees,不同的是关键字是Integer类型,而Name Trees是串类型。以数字升序进行排列。