%PDF-1.6 PDF版本号
---------------------------------------------------------------------------------
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
>>
endobj 前面那个1 是对象号 0 代表 如果这个对象被修改将会增加1 后面的obj是关键字 (记住咯 下面就不讲了)
<< >> 字典符号 用于括内容
其中,“/Type /Catalog”说明了该对象的类型是/Catalog(即“目录”对象),它是PDF文档的根对象。“/Type”中除了有“/Catalog(目录对象)”外,还有“/Outlines(书签大纲对象)”、“/Pages (页面组对象)”以及“页面组对象/Pages”中含有的若干“/Page(页面对象)”等。
“2 0 R”和“3 0 R”都是对对象的“间接引用”。“2 0 R”就是在引用“2 0 obj”对象,“3 0 R”就是在引用“3 0 obj”对象。
---------------------------------------------------------------------------------
2 0 obj
<< /Type /Outlines
/First 10 0 R
/Last 11 0 R
/Count 2
>>
endobj标签对象
/First 是第一个标签的意思 引用 第10个对象
/Last 最后一个标签 引用的是 第11个对象
/Count 是标签数量
---------------------------------------------------------------------------------- 3 0 obj
<< /Type /Pages
/Kids [ 4 0 R 8 0 R ]
/Count 2
>>
页数组 对象 用来记录 多少个页
--------------------------------------------------------------------------------
4 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [ 0 0 612 792 ]
/Contents 5 0 R
/Resources << /ProcSet 6 0 R
/Font << /F1 7 0 R >> >>
>>
endobj页对象
/Parent是指向哪个页数组对象 这里是3 对象 同样 3对象里的页数组里也包含 4对象
/MediaBox 设置页面 大小
/Contents 内容显示 对象5
/Resources 指定输入的类型 对象6
/Font 字体
---------------------------------------------------------------------------------
5 0 obj
<< /Length 73 >>
stream
BT
/F1 28 Tf
100 600 Td
5 Tr
50 Tz
30 Tw
1 0 0 rg
0 0 1 RG
(Hello Xiao Hui!)Tj
ET
endstream
endobj 页面输入内容对象
/Length 内容的长度
stream endstream 关键字 内容流对
BT ET 字体关键字对
/F1 28 Tf 指定字体 大小
100 600 Td 指定字体在页面的所在位置
5 Tr 50 Tz 30 Tw 1 0 0 rg 0 0 1 RG 字体样式
(Hello Xiao Hui!)Tj 输入内容
-------------------------------------------------------------------------------------6 0 obj
[ /PDF /Text ]
endobj 输入内容的类型
--------------------------------------------------------------------------------------
7 0 obj
<< /Type/Font/Subtype/Type1/Name/F1/BaseFont/Helvetica/Encoding/MacRomanEncodin
>>
endobj
字体的样式
-------------------------------------------------------------------------------------8 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [ 0 0 612 792 ]
/Contents 9 0 R /Resources << /ProcSet 6 0 R
/Font << /F1 7 0 R >> >>
>>
endobj 第二页内容 引用 对象9里的内容 详解看对象4
------------------------------------------------------------------------------------
9 0 obj
<< /Length 73 >>
stream
BT
/F1 38 Tf
100 100 Td
2 Tr
50 Ts
5 Tc
1 0 0 rg
0 0 1 RG
(Hello Hai Ming!)Tj
ET
endstream
endobj 第二页 所显示的内容 详解看 对象5
--------------------------------------------------------------------------------
10 0 obj
<< /Title (xiaohui)/Parent 2 0 R/A 13 0 R /Next 11 0 R /First 16 0 R /Last 16 0 R /Count 1>>
开头标签
/Title 标签名
/Parent 指定标签属于哪个对象 这里指 对象2
/A 点击触发事件
/Next 指定下个标签 (必须有这个 要不下面的标签出不来)
/First /Last 子级标签的 头 和尾
/Count 标签数量
--------------------------------------------------------------------------------
11 0 obj
<< /Title (xiaojie)/A 12 0 R /Parent 2 0 R /Prev 10 0 R /F 0/C[ 0 0 0]
>>
endobj尾标签
意思同上
/Prev 指定上一个标签 (必须有)
---------------------------------------------------------------------------------
12 0 obj
<</Type/Action/S/GoTo/D 14 0 R>>
endobj
对象10 的触发事件
-------------------------------------------------------------------------------
13 0 obj
<</Type/Action/S/GoTo/D 15 0 R>>
endobj对象11 的触发事件
---------------------------------------------------------------------------------
14 0 obj
[ 8 0 R/FitH 418.17]
endobj当点击xiaohui标签的时候 页面将跳到 对象14里的方位
--------------------------------------------------------------------------------
15 0 obj
[ 4 0 R/FitH 701.125]
endobj
当点击haiming 和xiao jie标签的时候 页面将跳到 对象15里的方位 --------------------------------------------------------------------------------
16 0 obj
<< /Title (HAI Ming)/A 12 0 R /Parent 1 0 R /F 0/C[ 0 0 0]
>>
endobj标签 xiaohui 的子标签
-------------------------------------------------------------------------------
xref
0 18
0000000000 65535 f
0000000009 00000 n
0000000074 00000 n
0000000120 00000 n
0000000179 00000 n
0000000322 00000 n
0000000422 00000 n
0000000364 00000 n
0000000466 00000 n
0000000496 00000 n
0000000555 00000 n
0000000666 00000 n
0000000411 00000 n
0000000377 00000 n
0000000454 00000 n
0000000423 00000 n
0000000511 00000 n
0000000644 00000 n 交叉引用表如果这个表被破坏,那整个PDF文档就不能被Adobe Acrobat Reader打开了,但Foxit Reader的容错率比较强,它还是可以打开的,所以建议大家把上面的文件保存后,用Foxit Reader打开
第二行“0 18”这两个数,第一个“0”表示“交叉引用表”的起始对象号(这个文件是0,为PDF自定义的对象0,无特殊作用),第二个“18”表示“交叉引用表”的对象总数(包含刚才自定义的0对象)。
其余的行,每行为一个对象。
“0000000000 65535 f”这一行比较特殊。“0000000000”表示该对象在的起始位置为0,生成数为65535,f表示该对象未被引用,这是PDF的规定。
剩下的行中,n表示该对象已被引用
----------------------------------------------------------------------------------------------
trailer
<< /Size 18
/Root 1 0 R
>>
startxref
625
%%EOF 这是PDF文件的“文件尾”部分,以trailer对象的开始,“trailer << >>”里面是一个字典
“/Size 18”表示该PDF文件中的obj对象总数。
“/Root 1 0 R”表示该PDF文件中的根对象,为“1 0 obj”。
“Startxref 625”表示“交叉引用表”的偏移地址,可以用它来定位PDF文档中所有的对象的相对地址。
一般放在文件最后,是文件结束标志。