PDF文件的基本结构(详细)

更新时间:2023-06-29 21:37:06 阅读: 评论:0

PDF⽂件的基本结构(详细)
1 Header部分
PDF⽂件的第⼀⾏应是由5个字符“%PDF-”后跟“1.N”的版本号组成的标题,其中N是0到7之间的数字。例如下⾯的:
  %PDF–1.0
猫咪电脑壁纸>王亚伟  %PDF–1.1
种公羊  %PDF–1.2
  %PDF–1.3
  %PDF–1.4
  %PDF–1.5
  %PDF–1.6
  %PDF–1.7
从PDF 1.4开始,应使⽤⽂档⽬录字典中的Version 条⽬(通过⽂件Trailer部分的Root条⽬指定版本),⽽不是标题中指定的版本。
2 Body部分
PDF⽂件的正⽂应由表⽰⽂件内容的⼀系列间接对象组成,例如字体、页⾯和采样图像。从PDF 1.5开始,Body还可以包含对象流,每个对象流包含⼀系列间接对象。例如下⾯这样:
10 obj
痴人说梦什么意思
<< /Type /Catalog
  /Outlines 20 R
  /Pages 30 R
>>
endobj
20 obj
<< /Type Outlines
  /Count 0
>>
endobj
30 obj
<< /Type /Pages
/Kids [40 R]
/Count 1
>>
endobj
40 obj
<< /Type /Page
  /Parent 30 R
  /MediaBox [00612792]
  /Contents 50 R
  /Resources << /ProcSet 60 R >>
>>心率偏低
endobj
50 obj
<< /Length 35 >>
stream
  …Page-marking operators…
endstream
黄瓜鸡蛋水饺endobj
60 obj
[/PDF]
endobj
3 Cross-Reference Table 交叉引⽤表部分
交叉引⽤表包含⽂件中间接对象的信息,以便允许对这些对象进⾏随机访问,因此⽆需读取整个⽂件即可定位任何特定对象。
交叉引⽤表以xref开始,紧接着是⼀个空格隔开的两个数字,然后每⼀⾏就是⼀个对象信息:秦晋之好
xref
07
000000000065535 f
000000000900000 n
000000007400000 n
000000012000000 n
奖金分配方案000000017900000 n
000000030000000 n
000000038400000 n
上⾯第⼆⾏中的两个数字“0 7”,0表⽰下⾯的对象从0号对象开始,7表⽰对象的数量,也就是说表⽰从0到6共7个对象。
每⾏⼀个对象信息的格式如下:
nnnnnnnnnn ggggg n eol
nnnnnnnnnn 长度10个字节,表⽰对象在⽂件的偏移地址;
ggggg 长度5个字节,表⽰对象的⽣成号;
n (in-u)表⽰对象被引⽤,如果此值是f (free),表⽰对象未被引⽤;
eol  就是回车换⾏
交叉引⽤表中的第⼀个编号为0的对象始终是f(free)的,并且⽣成号为65535;除了编号0的对象外,交叉引⽤表中的所有对象最初的⽣成号应为0。删除间接对象时,应将其交叉引⽤条⽬标记为“free”,并将其添加到free条⽬的链表中。下次创建具有该对象编号的对象时,条⽬的⽣成号应增加1,最⼤⽣成号为65535;当交叉引⽤条⽬达到此值时,它将永远不会被重⽤。
交叉引⽤表也可以是这样的:
xref
01
000000000065535 f
31
000002532500000 n
232
000002551800002 n
000002563500000 n
301
000002577700000 n
4 Trailer部分
PDF阅读器是从PDF的尾部开始解析⽂件的,通过Trailer部分能够快速找到交叉引⽤表和某些特殊对象。如下所⽰:
trailer
<< /Size 7
/Root 10 R
>>
startxref
408
%%EOF
⽂件的最后⼀⾏应仅包含⽂件结束标记%%EOF。关键字startxref下⾯的数字表⽰最后⼀个交叉引⽤表的xref关键字开头的字节偏移
量。trailer和startxref之间是尾部字典,由包含在双尖括号(<<…>>)中的键值对组成。

本文发布于:2023-06-29 21:37:06,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1069043.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   包含   交叉
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图