PDF文档结构分析 一

文章目录

  • 一页空白PDF
    • [1. 文件头 (Header)](#1. 文件头 (Header))
    • [2. 对象定义 (Object Definitions)](#2. 对象定义 (Object Definitions))
      • [对象 1:文档目录 (Catalog)](#对象 1:文档目录 (Catalog))
      • [对象 2:页面树 (Pages Tree)](#对象 2:页面树 (Pages Tree))
      • [对象 3:修改日期](#对象 3:修改日期)
      • [对象 4:页面对象 (Page)](#对象 4:页面对象 (Page))
    • [3. 交叉引用表 (Cross-Reference Table)](#3. 交叉引用表 (Cross-Reference Table))
    • [4. 文档尾 (Trailer)](#4. 文档尾 (Trailer))
    • 文档特征总结:
  • 五页空白PDF
    • [1. 文件头 (Header)](#1. 文件头 (Header))
    • [2. 对象定义 (Object Definitions)](#2. 对象定义 (Object Definitions))
    • [3. 交叉引用表 (Cross-Reference Table)](#3. 交叉引用表 (Cross-Reference Table))
    • [4. 文档尾 (Trailer)](#4. 文档尾 (Trailer))
    • 与之前文档的主要区别:
      • [1. **页面数量**](#1. 页面数量)
      • [2. **对象数量**](#2. 对象数量)
      • [3. **页面对象属性**](#3. 页面对象属性)
      • [4. **文件结构**](#4. 文件结构)
      • [5. **文档ID不同**](#5. 文档ID不同)
      • [6. **修改日期**](#6. 修改日期)
    • 推测的可能操作:
  • 文字图像PDF

一页空白PDF

cpp 复制代码
%PDF-1.7
%µ¶
% Written by MuPDF 1.27.0

1 0 obj
<<
  /Type /Catalog
  /Pages 2 0 R
>>
endobj

2 0 obj
<<
  /Type /Pages
  /Count 1
  /Kids [ 4 0 R ]
>>
endobj

3 0 obj
<<
  /ModDate (D:20260201101915+08'00')
>>
endobj

4 0 obj
<<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [ 0 0 595 842 ]
  /CropBox [ 0 0 595 842 ]
  /Resources <<
  >>
>>
endobj

xref
0 9
0000000005 65535 f 
0000000042 00000 n 
0000000096 00000 n 
0000000162 00000 n 
0000000221 00000 n 
0000000006 00002 f 
0000000007 00002 f 
0000000008 00001 f 
0000000349 00001 f 

trailer
<<
  /Size 9
  /Root 1 0 R
  /ID [ <518807DC94414C29E02FD2A979A55577> <621008229B2755FDD137456AAC1B1AFA> ]
>>
startxref
349
%%EOF

我来逐块分析这个 PDF 文档结构:

1. 文件头 (Header)

复制代码
%PDF-1.7
%µ¶
% Written by MuPDF 1.27.0
  • PDF 版本:1.7
  • 文件包含二进制数据(%µ¶ 表示二进制内容)
  • 由 MuPDF 1.27.0 生成

2. 对象定义 (Object Definitions)

对象 1:文档目录 (Catalog)

pdf 复制代码
1 0 obj
<<
  /Type /Catalog
  /Pages 2 0 R
>>
endobj
  • 根对象
  • 指向页面树对象(对象 2)

对象 2:页面树 (Pages Tree)

pdf 复制代码
2 0 obj
<<
  /Type /Pages
  /Count 1
  /Kids [ 4 0 R ]
>>
endobj
  • 总页数:1
  • 子页面引用:对象 4

对象 3:修改日期

pdf 复制代码
3 0 obj
<<
  /ModDate (D:20260201101915+08'00')
>>
endobj
  • 修改日期:2026年2月1日 10:19:15(东八区)
  • 注意:这是未来时间(相对于今天2025年)

对象 4:页面对象 (Page)

pdf 复制代码
4 0 obj
<<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [ 0 0 595 842 ]
  /CropBox [ 0 0 595 842 ]
  /Resources << >>
>>
endobj
  • 页面尺寸:595×842 单位(A4 尺寸,单位是点,1/72英寸)
  • 裁剪框与媒体框相同
  • 空资源字典(没有字体、图像等资源)
  • 这是一个空页面

3. 交叉引用表 (Cross-Reference Table)

pdf 复制代码
xref
0 9
0000000005 65535 f 
0000000042 00000 n 
0000000096 00000 n 
0000000162 00000 n 
0000000221 00000 n 
0000000006 00002 f 
0000000007 00002 f 
0000000008 00001 f 
0000000349 00001 f 
  • 有 9 个条目(索引 0-8)
  • 格式:偏移量 世代号 f/n(f=空闲,n=在用)
  • 对象 1-5 是在用对象,6-8 是空闲对象

4. 文档尾 (Trailer)

pdf 复制代码
trailer
<<
  /Size 9
  /Root 1 0 R
  /ID [ <518807DC94414C29E02FD2A979A55577> <621008229B2755FDD137456AAC1B1AFA> ]
>>
startxref
349
%%EOF
  • 总条目数:9
  • 根对象:对象 1
  • 文档 ID(两个 16 字节的十六进制字符串)
  • 交叉引用表起始位置:349
  • 文件结束标记

文档特征总结:

  1. 极简结构:只有必要的 PDF 对象
  2. 空页面:没有实际内容(文本、图像等)
  3. A4 尺寸:标准页面大小
  4. 线性化:只有一个交叉引用表(非增量更新)
  5. 可能用途
    • 模板文件
    • 测试文件
    • 占位文档
    • 由程序生成的初始文档

这是一个非常基础的 PDF 文档,仅包含框架结构而无实际可视内容。

五页空白PDF

cpp 复制代码
%PDF-1.7
%µ¶
% Written by MuPDF 1.27.0

1 0 obj
<<
  /Type /Catalog
  /Pages 2 0 R
>>
endobj

2 0 obj
<<
  /Type /Pages
  /Count 5
  /Kids [ 4 0 R 7 0 R 8 0 R 9 0 R 10 0 R ]
>>
endobj

3 0 obj
<<
  /ModDate (D:20260201101954+08'00')
>>
endobj

4 0 obj
<<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [ 0 0 595 842 ]
  /CropBox [ 0 0 595 842 ]
  /Resources <<
  >>
>>
endobj

7 0 obj
<<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [ 0 0 595 842 ]
  /CropBox [ 0 0 595 842 ]
  /Resources <<
  >>
  /Rotate 0
>>
endobj

8 0 obj
<<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [ 0 0 595 842 ]
  /CropBox [ 0 0 595 842 ]
  /Resources <<
  >>
  /Rotate 0
>>
endobj

9 0 obj
<<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [ 0 0 595 842 ]
  /CropBox [ 0 0 595 842 ]
  /Resources <<
  >>
  /Rotate 0
>>
endobj

10 0 obj
<<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [ 0 0 595 842 ]
  /CropBox [ 0 0 595 842 ]
  /Resources <<
  >>
  /Rotate 0
>>
endobj

xref
0 13
0000000005 65535 f 
0000000042 00000 n 
0000000096 00000 n 
0000000187 00000 n 
0000000246 00000 n 
0000000006 00002 f 
0000000011 00002 f 
0000000374 00000 n 
0000000514 00000 n 
0000000654 00000 n 
0000000794 00000 n 
0000000012 00001 f 
0000000935 00001 f 

trailer
<<
  /Size 13
  /Root 1 0 R
  /ID [ <D85D7BEF6A1EEBB3E02FD2A979A55577> <70E436F9CDEC5B3A834F8822DC29B017> ]
>>
startxref
935
%%EOF

我来逐块分析这个 PDF 文档,并与之前的文档进行比较:

1. 文件头 (Header)

相同:%PDF-1.7 版本,都由 MuPDF 1.27.0 生成

2. 对象定义 (Object Definitions)

对象 2:页面树 (Pages Tree) - 主要变化

pdf 复制代码
2 0 obj
<<
  /Type /Pages
  /Count 5                    ← 页数从 1 变为 5
  /Kids [ 4 0 R 7 0 R 8 0 R 9 0 R 10 0 R ]  ← 引用了5个页面对象
>>
endobj

新增了4个页面对象 (7-10)

除了原有的对象4,新增了:

  • 对象7、8、9、10:都是Page对象
  • 每个都包含 /Rotate 0 属性(旋转角度为0)
  • 对象4没有/Rotate属性,但新增的页面都有

3. 交叉引用表 (Cross-Reference Table)

pdf 复制代码
xref
0 13                          ← 总对象数从9增加到13
0000000005 65535 f 
0000000042 00000 n 
0000000096 00000 n 
0000000187 00000 n 
0000000246 00000 n 
0000000006 00002 f 
0000000011 00002 f 
0000000374 00000 n   ← 对象7
0000000514 00000 n   ← 对象8
0000000654 00000 n   ← 对象9
0000000794 00000 n   ← 对象10
0000000012 00001 f 
0000000935 00001 f 

4. 文档尾 (Trailer)

pdf 复制代码
trailer
<<
  /Size 13                     ← 大小从9变为13
  /Root 1 0 R
  /ID [ <D85D7BEF6A1EEBB3E02FD2A979A55577> <70E436F9CDEC5B3A834F8822DC29B017> ]
>>
startxref
935                           ← 交叉引用表起始位置从349变为935
%%EOF

与之前文档的主要区别:

1. 页面数量

  • 之前:1页
  • 现在:5页

2. 对象数量

  • 之前:9个对象(5个在用,4个空闲)
  • 现在:13个对象(11个在用,2个空闲)

3. 页面对象属性

  • 之前:对象4没有/Rotate属性
  • 现在
    • 对象4:无/Rotate(保持原样)
    • 对象7-10:都有 /Rotate 0 属性

4. 文件结构

  • 之前:交叉引用表起始位置349,文件较小
  • 现在:交叉引用表起始位置935,文件更大(因为多了4个页面对象)

5. 文档ID不同

  • 两个文档的ID完全不同,说明是不同的文档

6. 修改日期

  • 之前D:20260201101915+08'00' (10:19:15)
  • 现在D:20260201101954+08'00' (10:19:54)
  • 相差39秒,可能是对同一文档进行修改操作的时间间隔

推测的可能操作:

  1. 这是一个文档扩展操作 - 在原来的1页文档基础上添加了4个空白页面
  2. 可能是通过插入页面功能实现的
  3. 新增的页面都明确设置了旋转属性(Rotate 0),而原始页面保持原样
  4. 保留了原始的对象4(第一页),只是在其后追加了新页面

这个文档仍然是空页面文档(所有页面都没有内容),只是页面数量增加了。


文字图像PDF

cpp 复制代码
%PDF-1.7
%µ¶
% Written by MuPDF 1.27.0

1 0 obj
<<
  /Type /Catalog
  /Pages 2 0 R
>>
endobj

2 0 obj
<<
  /Type /Pages
  /Count 1
  /Kids [ 4 0 R ]
>>
endobj

3 0 obj
<<
  /ModDate (D:20260201103648+08'00')
>>
endobj

4 0 obj
<<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [ 0 0 595 842 ]
  /CropBox [ 0 0 595 842 ]
  /Resources <<
    /Font <<
      /AFSF1 7 0 R
    >>
    /ExtGState <<
      /JYE1 16 0 R
    >>
    /XObject <<
      /AFSX1 15 0 R
    >>
  >>
  /Contents 17 0 R
>>
endobj

7 0 obj
<<
  /BaseFont /SIMSAB+SimSun
  /Encoding /Identity-H
  /Subtype /Type0
  /Type /Font
  /DescendantFonts [ 8 0 R ]
  /ToUnicode 13 0 R
>>
endobj

8 0 obj
<<
  /Type /Font
  /Subtype /CIDFontType2
  /BaseFont /SimSun
  /CIDSystemInfo 9 0 R
  /FontDescriptor 10 0 R
  /W 12 0 R
>>
endobj

9 0 obj
<<
  /Registry (Adobe)
  /Ordering (Identity)
  /Supplement 0
>>
endobj

10 0 obj
<<
  /Type /FontDescriptor
  /FontName /SIMSAB+SimSun
  /Flags 32
  /FontBBox [ -7 -140 1000 859 ]
  /ItalicAngle 0
  /Ascent 859
  /Descent -140
  /CapHeight 859
  /StemV 70
  /FontFile2 11 0 R
>>
endobj

11 0 obj
<<
  /Length1 18058290
  /Length 11113
  /Filter [ /ASCIIHexDecode /FlateDecode ]
>>
stream
789ced9d796c1cd77dc7df9b999d63678fd99be292da590e7729792951d28aa2
28cbf28a14a95ba24452ded561ef8aa4243a92255b8a6c2775cba471adaee134
7f1445fee891f4081a2041878ed150fea37080a6e83f39da2240913a687ae568
90204873b57f74fb7b3343eaa85324815b05eef7f39de3bddf3be6bddf3b6616
9265c6196309ba28ccda3f3d3bf615e5cb3f648c6f21ebfae3d343db4e447ebc
9531c9a27873ee4aeb9a7dcafe11c5af51fcc6dccd1bb6f23aff1cc5ff99e2af
5fb876f1ca67e75fa3f2f115c6a2dfb9d8ba7e8d4d332acf7b283d7df1f2f317
befe1f9fbccd98fa61c68cf597165af3fffefdf37f41e97f4be93b2e9141e263
5fa6f88728de7fe9ca8de78c257691b18fae30ae775dbe3ad7fad8477fff2f19
ebfd63c63e10bbd27aeedac427e31fa1fc5394df7eaa756521fa9e0ddf624c26
1bfbdeb5abd76f74becd22942eda6b5f7b66e1da8913f1af53677f93daacdca4
e7f1f78dfd19a5bf269e77939e1766ec1ce31fffa2781ee3e4158d85598285d8
c32cdee9b03813fe0ab31e9274a9f5d4228b5d6edd788ac5d82a943ea6f2f789
5e1312b3d810bb4581af44bfe359643f5be75f45bbde0251ff9b9d37593f679d
ffecfc88fb96bb1853833c7f27923a1fee7c851becbe5c419ed0ae7fc8cafd5f
7822befb07ccf4337cfac3634be2fe8fbb3ef609aaff4db2be49d108b59405ed
5b22ef8798ce9698c86905f725cab397fac15526738178a67ed7334f3726c659
8dcdbffc25bffd4c9c4ad0ae1bec4fc408783129f0429aaedcbb2bace9dd2db2
286cfef8f499c7cebcbcf0d2c5c12b87df5b7ef94be477f656d6ce3ffde9967b
75bfaf023eddf9313d5ff2ce1bdef3d7cecedf53edcbc158d1c4a536a8a49877
55bd9845beb0c8a29162cca0d9a0b1757446291ca36b8eee192a6d78e52c9662
d9b55211cfa25238e25dfdf2296f56c5bd5ac26437a896384b524d222cca8bda
cc605669ecb4f0942246f902db168439d5580ec212e5ec0ac2f25d76e5ae7088
72b020ac7af6536c813dc3aeb34576953d456333cc3653ed557692ec17d9bbd9
65d6a2f4694abf42d777539e8f53ae71ca7d8d3d4f298b94eb12f9d3a6f61d60
c7d931b69f35d8418a4f50d905364769cf78752f52d82fb999eedbd816d25636
1884c57927bc8db15ae76cb5bb70a65a2b9cae760a8d6d9d427deb52e1b1adb5
c2a92d9dc2ec964a6166a85398de64174e6eae154e6cee14a6063b85e38395c2
b1872a85a30f750a4736760a87375885431b2a85831b3a850303b5c2fe814e61
b2dc294c943a857dfd4b85713ac79ceec25e67a950a3f3d1be5a614f5fa7f008
dd77173b8587ed4e6157a153185ddf29ececcd16467a2b851dbd9dc2706fadb0
bda753d8bc69a9b0a9b25418acd885d2ba4ea15fcfaf3bebe8ddebcef651ac98
ed14ec4857f66c21172daccf750abd64e8c9460bf9fc3a76a6ab2bcbce748b50
4e8432eb7666779e8e677827c3534793b3b503898e359b6c588de8d1c86ce8a8
321b69288df8526cd63c1a9ed58eaab3dc62b3b146b8a13658c338aacfca47a5
59bd21356c694a5a925ce9ab5248aed542fc36ade599cae115ad73f2b0ab4f9d
71f92db7342daeb513a75df596cb664f9fa92f73fec1c68bafbcc27ac70ebb1f
9aaebf4acbb377acb12c49e327eacb8afcc1c6755661954a8505aa04e1d52bbf
7e835756258ce2c6e9ee9f015e39be1af86fc13bb14aa58be6749c66ebf3ecd3
345737b38fdf66c9ce773f956347f595ce3756efafc52d764459e97cf5b54cce
0fd492c2941d8c648b6ad62ad692eca8b5d279a3b63bcc8e16b75819beef7226
3d281b9581c572e9c94a79b112b57b177bf24fda3d8b36cbca46269a4a2f468d
bd97a3a62c2da6e4bd97532a7bb452a123399a488ed2bd62fd395d28fc52850f
89b0f56debdbdbb66dd9eab57ca45c76fad44c3a5bddb66344eb2b0f6fdf51dd
96cd0d6f2f3bceb0b089a46a86f268ceb0aa9e0d597a3c61c5cdb8524c76f7a4
f4444809e966281c52144d554c550a251ed7b59e5c572e16ebefede92e68da0e
555515e577438a2acb29c3143b57b8f30df603f657b4d78cb18db5e4a091ceef
e9da3336660c6da86e289568eb181a1a1daa5613d5847fdb96a86ed99adb313c
ac6a033b768ce43455cb699991744e239bd3a70d54a9715e921fd93e40c9d591
9c93cde6327d5ab93ce078d12ab77272ae286774cbb0f4396e712b6a1a5be31b
72726a209ca5f03ede656c8aa6f6c53626ac50ac6828e948725b979dbcd89d93
7b4f5831a59832b497075269cd36a3b2d12ced48cac9b1f5b2b13e9c32b58dd1
d443555531cc5ae952244933c2ec7c8d7d9ffd0deb639ba8af03b5449f55b0d2
e9b21e0a95c7464672e51c7535499d4c046755f47484daeff76424e7f554b43d
93d5ca03c3d9a0c323e581916c3693569dbe4cd5cb3630e264551ac011f24235
f71e6e964f527fae9bc9c4665d3f60a52ff39c6217a2c7c8f88c1297f2aa2e29
c601239d4ecad18f48e184a41ab2c2f71b49ad4f36cc94540ca96a2c5d4be931
3da4706db76cbc2b9a94a23149d1e548525e27752763922c499a9530bd9e7ed3
1b5387e67f8d156a515bea9554b5f4f0d6ada952eaae5efa3dbc333caa373cde
50de3d86db07d63a3850ceadf58dba4605fbb40f196356f689cc8eee84ba7e43
54a1918c6ddf28f76db17651ff2e72538ec7c25ce1f291e81f4a4632145642fc
0f8c9495696b792b5b2e2b8a6ca636f59d4bebc9c77b865372a64a9d76c2bb24
3d1e52cd706cb4db8a70595623998899ea166fa208f5ef7becf3f406ec63036c
5d2d9ced8e3ba66d77b36eea9cd731bf676b8d1ed0441755cdefe380e81b8d1a
756e249bdb31f2742caacbb2249b675fb7b27ba2850d7b53f22385a171bef7a1
de483e6a8ec67abbcdcf1bf150c80c5b89ad56766fa53fa490e7fb2a513955a9
d46479d7c0c02e7ab39a9d7fa139f6d76c232bd52cbdac9619cbae4bf5a62c4b
ceca81e3ef2c256aa1e76bc75b34a24d81bb57578cdf5a6fbddce209fe90a13f
5cdecfc79c87c9b10bbc3bbc2f963e5ba4c6eec887d6536bfa53ea6042d2ebc7
4acaa669d9c8db117d20969ece28dc7466176911d0778449ebfd5bec73de3744
3f7d61ee61b3ec717a1fd3da1f9d7ba27afad4e46ce921bb5b89c532d5cc6a8b
b7f9a2c54f9bd5c80e6a20b548cb50e3879d0c85b2d4f83d52ee8ebbc5fee075
239dcb0501d55f32e47b359b4b3b7dde14a2cd4d18778c0c64b37ec991d5c071
cee35bf5a8cea3d56446e3d9ad92939522bd862a298a9a1ce53cabf30ccf687a
44cbe5c3afa468c1f090129165239e34cccc488f4c8b4a0e99295a5db22c87a2
1b5237d6197a543d954eabbffef2d3a6b66f7fb7d2b56d7c3a1d574246249996
e2e97dd998a9cfc6e3f66ff7c4c3da6d33a2c43545e1af1c8f44fb29a085c261
55d31545e289fde1445a35e3b19df18461c4e2f4cd4cf3f26bec8734faebe85b
68923d415f2f23b57533ac78a139f5c491b347a6a68a2959d38a1bfabbbb7716
77ae4d873b177f7b153ece699abf28038fd22cf057644e5ddd77efcfe08dc7bd
fbf2c8da545af3bfbf65d150a9aa57ead1b41ed91ab6b65baace252eab6ac688
27e474fa9261994a2aa1a50d73bb19af46698be29c36916b3cce7319296f8753
e1a811be4423908d24aa6133d453d4c5bccca6e25cd52439ac7d3112b2c29661
d0de16d2a35a241e9333a574341596737db99892a0b430e553544b3f7bc80ceb
f9f8de5c44ce6dca5972ca3452a998a9c523c9c7a3462846be97d4b3b2918a25
a25a389c125fa5e2cdf543f605fadeed613b69479f61a3b5ee3d23a343ea081f
9a993a7a74a82b93191aac6eac8e8cf40ff5dfbbfad6fc9df0d7a198769ae66d
6fb47f0b170e0c07bb3eb9b1aaa673599ab2de9631502d0fe7b474ce73bf2817
ec30a2a058c3abe59ca21c4b2a4a4891e4a42327745db3423ca29bc6809a34fe
4857244a504aebe587c9744aea32785f345993c309dafdb9aca8b19d65ee385a
a42b625086d148bcf886144e59b21c89fdce80dc1d89c4126af831d90847b4f3
1b73dd51b5e7c823b251e88d6ab9442c3dff7b5a24aa87a3b14f984a2ca12755
e5806c881d80d5265ffab5173ff0abef7fdfd2affcf20bbff4def73cffdcb337
df7de3fa334f5fbbfad495cbef7a72f1d2c50b0bf373e75bcd271e3f77f6cce9
46fdb153b333d327a68e1f3b7ae4f0a18307f64f6e28586163902f9be171677c
21bc69902d874d0a9a9b06b9ab8ebb9a67748f576cfa58ac170f9fac4feccb17
8b8dbc53746bae529a10676bbe3db79ad0a02aa81495a52a0e4f3b874f9caedb
13eda6974896997b627efaceb5b420e44ae3337577b242b1bbe2fbbdf85af4c0
7dc90757931ddb6553edf6fc32934b64afe597b917088dbfdca09e341cf77cc5
293af505cabb4c3fca8a33cd710a455643dcde4f35da2b163b4fe7dc63ce0a0f
42a7ebaeddbcd03840b9995472bd637a850d3bcff9e1a66bcfd9b6ab969cf353
f576d1e54d271fc44fd6c963bc956f179da2dd68ac743ed323723b45aa4b6263
cb0ebf7562b9c66f4d9faedfb6e857f2ad99faab1297c69bf409de4f69f5db36
0db8679584551845c416117698d3c8bc2ae95efefced1afd54f75215cfe0c5e7
a8179e4d5fb57136b722f936cb7f50d97b508dbe25e756143fa5b69a5b219bee
db963c9b07f9817c5f0b876a7acda845a4a844de16a657c9f23afd123738fb54
8447797e994a9df4cc2b7c69d9a8e5fd1c4b94a3e6b7f0d6ec9d47cf9eae7f2a
c2a89877a5078d09360d4e2c4bc72ace9df978a24e6e9f58e6c72a4d6f4ecaa5
099b66a35b9bae8b9ccd3ccdc87d9b06c58cb0ebce42de692ca7d3ed6b135483
b3dc52cbcd4adb9f18623a38d62e9a4c72e9e09c33d914396872d371904c73a7
eca67bbe59a1a06d4db627c5d8b5446e965d96e4d232574a7c0fdb437d57236e
d85918734d676c2de551f6a89fa28a14cd197379d6f7dc843361772db6e79cf3
344f6a53f58bf90b8d16d5edd69c96ab3863f965858dd1aceee2d489896576ac
42bd394c33e57865ea0c2d25d173bbddde672fd794726bae25e2fb8ae4897690
e4ecdbd7b8abc484dd766badb926e59868789969bd9071c269d9f3e452ea2ef9
6ada113f0d4f8b3233a7ebedc8bc33ef90436bb5768bba9db7e71af97663ce73
3095a7a6b14d83a13b7b48b08548626596e62ed065c566e79bce79df20d6d0fd
b68bf71b2e50aebb6dce21f138efcebd7bfb9033314f39c4d99a77659a5c457b
bee1cf0f36e5adee9f9889df95c9a631f52a6f5b0fafc67810a3081d6df7e2bd
d14b6bd1497136c96b9bfdb9e22a6531d7ea45f7c9bc7bb95159cbd27297cedb
6ddb727639e2e215de2fcea61ba2c0d25c4b6c21aa987b64384406bb7e9e662f
5538d96cafce382aa694d79ee43e55b9a74adaf8f80c3d5a2a89eeb84b5376b3
61379b64a5a552ccdb6e88eef68596985c62739cf2fb33453b34dd5aed692acb
1af4d0bcabd13e7da1b5e014694f255ba3e17b5fb451a1d6b1e9bacbf2edb6d3
763935b1344999a9fab2ab960f8a1b1dd72a4e6b8106513ccf6e2d786527a9b9
9e77446df909a7d8a02c52c9f325398e76a3f3e232d7a6d9e89ea3d5162a25da
c9b63ddaaebfceced1b6a894e74e3569f3b62d7bd2f686ba45335938e1a08835
a8223fa3511219a9bc7794dd2b95e5735ae98ec53bae56fcccba572bb5ec64dd
9d5acda27907059eaeb8526e27258acef393f40e50bc8112ce0b950e927b6b34
abf2a2b4ed4a33f56078bcf20745d1fcea80f9c5c8e26d9de2e5555c6dafe9b7
d77fa8ea1d11ef304aae5ea28176156a839fac89eedc990414a646fb6564afb9
7e07284c8fb28314af23cd20a29416bc3ef92f2d5bec96f43a6f39e2ccaf74de
98a2b766d31167a3211eaf7b0f1225bcaadb7ec5c25daa487c2b57044ff20f53
1c07bd2edc6d0e7b87e6b559a4f95d0addebf8c07bb73b6f30df73c500316744
2f5f0a5665b0ee16f2eea54665de2fa5063bb84d3b2aeddc7327bc6f8233b41a
9ca246fb18759f5695ed4e57e89de1f5ed25dfab87fcdd41cc4a3ee9b0499a43
41806599cb9c035c5c182d2de7802b51742de4bc2a31ae3b3bc5cd70762e4b5c
a3dd5e6c465634421b7d7bae39efbf4ec9cb6c677eb7f88051bd8136bcb1bd29
b6a6997a28af34bc2953769fad04b3d8bfdeacaca53f2bd6a4b6ea495da4b5d7
12435e75cffa73a31c5c6f56f4b72cd5d67fba87e9c168ba86972676a3b2fe3f
3f4af607e8903f5c8724bfe643fe3e41d6f25cbb2db6b6e57331b14223e504d9
93d4b4516ae468d04af2cd2f5153a6c4a375cfe24569b969a239feb0954c4ab0
28ef67fca96d52a245adf94cdecf45c7ed4e87ddacace6f69d40ed0e97fc791e
2407a5fdd9f96ca541a149713629cba43883956406ab3472dfae1f54ef8fa971
6fa2b3569978d13b6b358ad8328fd097aa920fd113cbb645eedae5f9b34c4da5
787bd732d7ca418690c8209576b5dbe6eafe2fb6ffdbf499c8bc4f40d668df6f
705fa0f1a0b18ebe758a7ebf35ea9983518eaedd8531580ee171d71c17df2fe2
dd648809b099c6f785cf067b8ef7397197633c93588a775bbb84efb5d52de16a
65b5ecaadf2e784b3a287b9f75a6fe025985a73e2bde242ea77ba85c14675eb8
ce7b9a98e3572bc1c7ea0b6274dfef55f7fe8a6d2fd277d638a7af2d7a512e8a
57952d72eb656f936bd307cf62abe5ed43de8f8d2efa963a29be70e93bddb16c
be9bedf67fb238c1af017a0728a5faeefc6883befe573adfec69f85b95442f79
3a67dab66d2528a96d27e9e780fba2e7de20cdf16cf41657cb412ed183176971
8a7c6ff9a75a0f96df82200882200882a0ff7d71138220088220088220088220
0882200882a077ac96fe8ff45d0882200882200882200882200882de69921e81
20e86dd0072108822008822008827e1ac9bb2108822008822008822008822008
8220088220087ac0fa3708822008822008822008822008822008822008822008
8220e8274bf90dc638033f9125167fd04d00000000000000000000000080b703
ce58f841b7010000000000000000000000000000000000000000000000000000
0000003f1b9c31f341b7e1ede49dd61f00000000000000000000000000000000
00000000000000e09d08672cf2a0db0000000008f077d0010000000000000000
0000000000f076823f7b00000000000000000000000000000000000000000000
0000000000000000000000f0ff1dfcdbb3000000000000000000000000000000
00000000000000000000000000000000000000000000000000e0e7853316e60f
ba11bfc0c037000000000000000000000080770a9c31f341b701000000000000
00000000000000000000000000000000000000000000003f1b9c31e341b7e1ed
04ff7d030000000000000000000000000000000000000000000000f08b0f672c
f6a0db0000000008c4ff73f541b7010000000000000000000000000000ef1c38
63f107dd06000000000000000000000000000000000000000000000000000000
000000000000e041827fe70f0000000000000000000000000000000000000000
0000000000000000000000000000000000000000fcbc70c6a2ff055ec9ce30>
endstream
endobj

12 0 obj
[ 71 [ 500 ] 1411 [ 1000 ] 4487 [ 1000 ] 4539 [ 1000 ] 7095 [
    1000 ] 7516 [ 1000 ] 9083 [ 1000 ] 12630 [ 1000 ] 16901 [
    1000 ] ]
endobj

13 0 obj
<<
  /Length 588
  /Filter [ /ASCIIHexDecode /FlateDecode ]
>>
stream
789c5d91dd6ac4201085ef7d0a2fb7174b7e4d520881ba61692efa43d3174874
b2151a23c65ce4ed3bbadb2d5450f83ce7c8cc189dbab6d3cad1e8dd2ea20747
27a5a58575d9ac003ac2456992a4542ae16e144e310f864418eef7d5c1dce969
21751d7da0b63abbd3c3935c467820d19b956095bed04327413be576bcec3763
be6146a631691a2a61c2c75e06f33acc40a3903dfefa8fcf7ffae76e80a68193
6b396291b09a41801df405481de36a687dc6d510d0f29ffe784d8d93f81aac77
e725bae3b8c81b24566548f99965484952798d715606e23c50c53d71eeb58255
416bd9c953999e90d2acf4cea2cdbd334b588154f2b440cad3982155bc65a1ba
5b1dbe4e3fd0fb08c4662d761fa61e1af72d2b0df78f318bf1a9b07f00e3e087
d5>
endstream
endobj

14 0 obj
<<
  /Type /XObject
  /Subtype /Image
  /Width 84
  /Height 50
  /ColorSpace /DeviceGray
  /BitsPerComponent 8
  /Length 55
  /Filter [ /ASCIIHexDecode /FlateDecode ]
>>
stream
789cedc13101000000c2a0fea967094fa0000000003e06a2d65889>
endstream
endobj

15 0 obj
<<
  /Type /XObject
  /Subtype /Image
  /Width 84
  /Height 50
  /ColorSpace /DeviceRGB
  /BitsPerComponent 8
  /SMask 14 0 R
  /Length 4924
  /Filter [ /ASCIIHexDecode /FlateDecode ]
>>
stream
789cd59a8b7354d51dc7ff029d763aad550b01830602212f034920411091476b
90a93271c6548b4c051ca5ada5337406a9544b79950a8314e9404ba12a344e19
498c258fcdbe77efee7dece3de641342b0efbfa2df73cfeed9b3f7957b77371d
3bf39d3b27bb6777efe7fc9ee7dc28719f12f7a584f139954ef8e5d8180689d0
c88c26854706c7876e7e78e97c2ae6bf37a1a4e30139ec9b4846a6e438ae4452
349b08696228a744a633b1093900c5fd03934a7864e0fadeefef5cddb864ddea
154fae69ea7b6edb9e97767e3129df559353a9d8a48ccf8671a5034d09d94995
83bc3205a5a5002ffaaef9e38a47765ca5e858560c016d2a25cc6a524e896784
602230ac447c5a229c93625a32a225c39a1856932142a184a7d2914925087621
3038958e0e7ef2c7dd2fee58b5b2f689f6868d6b9b77bdb0fdc77b5ffefb546a
3a1da7d43925ea86ddb008595d1993ecd881e3869dce61577c2a23f8d3f17198
5f898e43c0cfc483aa109ad0c155a2a026e6d9a15c2aa449fe6468083ed07fed
83bee7b7b5353cb2a1b3f1a9ae967dbb7a0ffde4b5bfe5140a4b4d4fc72ed98b
8ba084b226d94d568431aa54c2e72036810c741f50a2636087e4c82830a1ac10
c80afe6c220073c3db79f60939944b4554d12f476fdfc9c6ff74e96cefb39b60
77b06fea6efdd19e978ebe75e0de84442d0e51eb97c1ae79677706674a27c775
765f560cc2eea9982fa3c352a9ba3000326f77c43bd821551c4fc5476654e1f2
f9933bb6ae43bc53f69fbeb1fb3747df42bc336aa6f9666706e5c560cda2af67
937e28932003550c6011a8f5c16b10a83529a84ff6c1ee77b5c407678e6eddb0
baa3f931043bd80f1d78edfd53efcc6a229fe58af8a93055799eafda7f9cf76a
33be193c23fae9640a4ea58a417d052cc0751fc0bb81b4e04b0b6389e0d0ec44
f2dca92348ef60dffc441bd88f1cfce1c533c7c0ce5c9d67c74d7a65a7f86a61
11ece638803bb0430c9c3a004cafd9b0230a901652f13128eeffec8b9c74f6c4
cfe1eded4d8f6e59bf0aecef1e7af3f2fba710ef7a8018dd9edea75776de013c
b1f3016ee7f6eed96177ca9e86cfc747ef4d8a678e1f467aef6ca9fbf6c60e98
fec491831f5e3a47f33cab6e06f6f91005b1cbf676ecc4013cb22bf151122952
00f5fde43b07c1bea675e9339bd620f0df3b76f8936bbffbc774da40ed9cebca
080467bb57c42e05894ce0f48a2f87d1113298f9f6c137d677acec6aabef797a
2dd8cf9dfcc5a7d7ff00768b443717bb595ed91d8a9a35b8e82f82d30247182d
d889e47026194057a0caa40183f31f787d17121d1adaed9bbbe0f6e77ffdee60
ff554fec76e0ff4b7682cfd8adec4e8c2e829774ceb94c4c4b85c5d8089af996
fa1ac2bea5fb3b4f759e3f4dd8d1d362b221e4e7955d46fee1e4dee799e7339f
5725bd6d66651d57bde243c39f5efffd85d31f5fbd20096342e476ef773737d4
3ddcddbea2674b17d851dc6fddb842ed6eee6d487b50594ea39d95f97b0cecb2
4776d6e458b24fe87d1dc637ae5ce8d9dcbd69fdaa1fecdaf9fadebeae8e86a6
fa85eb3a1ab66f213e7feee411b0fff34ec632d7d9ddf97cb02b5565a7b94e0c
0dbffaf2ceceb6fac71ef9c6ead6bae6158b1a972d80dd9feb7912a9feec89b7
c1feaf99ecff1d3b897dd1c6e7e9400a6373fae76b17fb7a9f59f0e07d8dcb6b
9a20ddeecf6e5d079f3f7b9cb0fffbaefa656057bcb3a37053a98518d70abd3d
c6d89686466ffdecc03ed81dec2d0d8b6177c2be8db09f3976986737e43a76e7
ece60d471676b2602f9d6066e7a3be527674f2fab60e92a2a317cf1d5f59bfb0
aef601b0372faf59bbaabe478ff7f77e5564a76dadb5dd5144dc511bf1a57c0d
52add8156c4e759917c12bbe819db537b393522232bcbeab79e143f73fde58db
b262d19ab6655b37b613f663876f7e74f93fb31a05c77cfedc86824f2a618640
457e0b3888355d45406e5c5cb4b2d853687a7595c3ae6f64f23b7a2984e2be67
77efa26f7d6579ddc3f0f9cec79752f6df9efee55f6f7e44f33ca28356796bbb
1bd845a30cec0cdf21deedc0f9779dc119bec1eef9239d4400bd8daa846ffde5
ead225dfac79e8febac55f87dd37ac6d426bd77feda2e0fffc4e46c0348b9037
51f3b0b4ca146b4de93a18f0cb60e71d634e7c73bcd33fe5d898968ae0ab5a1b
6b173e78dfb2da075a1b1603ff851d4f8f0df6d3ae2623f899b90dec8cc50edc
bc022ed9ddc8a5f5192c9feb7045aecb65e377a7a437f7bfb2a4e66bb50bbe0a
fcf6e647f7bffaa2e01f82d1e9768fd6c412f101eb486de900253e532e3b5b01
87d8a7ecf9f6bed4e7b19dc948c1999c78fbb31bfbf77d0f197e6377cb2b7d3b
06faafcca809d8572d2c147f5049dac2b95cdda5f5cdec68b0a97840f6a2e175
73f3c3d7c10cf9d100633708ec592938ad26e0f9b1c0e7a343fdc303d7c3be81
0925924b4569962b45a6ae1ee4115c82dbc6be5c5225ed00cb614f7067b6a5e0
c4ed41218572e918b6b4b84293a9e8745620af482180a3f723a734852d80d9d6
f44f37e066f69222e89addfcae033b925546f0dbb143b032aea0a602385ea165
9d9ed41537bfa5e0eebddd8ebde44bf472ec86dd30c19e7d9cb02788e717a803
541a010f402af2ad1281e971053bbd4e2af9a25672dae33dc65de29377f5726c
60b4935bf6c2610e7fb7fc52136793f2f87405083e3ba6e00f3dec73bba7d5b0
9c4c4b921c1f95abcdce0e344a7ebac08e1f2dee32e8318b5cd27d991bb94a9c
df60085e6097a002a3c88d2bb17b967b6ac396ba809f5f0450e707858edd0edf
dcb17b62b74b92c4ee9cccec73e679866f6637b81965cfb7befc6e4bb2b6bb81
bd6cbbdbc9c02e59d9bd5aec256d7f29bb59ac95754a5995498a8d40cef85ed9
2df1797603be25bb83c5ab025e2d768acfb31b64c95e3ceeb06737e39b9358d9
4b41d9797cc9c6f38b4b61f304c7819d4834e217b39f1470c95e15733389d161
b3e96513bba8a7419a09cb63b7dbef5b1e4158f25ab25bfa985bbb478621395a
c49738cc398a3effc456f070c4677be643ff65a830667581cd31b84d193fc4cb
925d72cd5e7c525f2e7bda74da699065b07805b7c417c3b7293e0b7c2ae6e476
62ecf43f702a617758810a619df1193b0b7caaa43bfce2c3eb385981f2d88b55
b2340f5497dabc0260a7f860a762ec73e24b7a8c54ceeee096f301cec4d899f5
a992057c8745e0d91dfe4faf12fcf90367ec79458aa64fba90a84b36ad80a747
f95f1676a860f7842e372bc05a82aab3cf2bb8993d1929e227adf013f1bcbcb2
7bc567e3b263a77276830398d925ae1bac16bb197c3ef0ddb03bdb5d9a07b7b7
04af3abe31deb98ce7d2e7ddb35705bf8aecff054ad8530a>
endstream
endobj

16 0 obj
<<
  /BM /Normal
  /SMask /None
  /CA 1
  /ca 1
  /AIS false
>>
endobj

17 0 obj
<<
  /Length 451
  /Filter [ /ASCIIHexDecode /FlateDecode ]
>>
stream
789c6dd14d6ac3301005e0bd4e3127b03dfa1b0b4aa1b293421785c45ab4cb20
d4a210c7c40e397f8dda45b184408bc7c783996137661dabfbf0883e1c5f2df8
059af4167f857f7937fce543f70ef5cb7ed823a006f70598e2dfdf8d80d45624
5ad09a2aa525b8fe09ada5677067b6a54666b4575d89726c328a6db19573bda5
02952e52c9b7940bb245aab2b1246f5491523ed6ba822235d9588d6a45a23bc7
0eac3e86cbe91e1fa19b2ed31cc7709fa38739ae1511eab7cf1dc2f70237d022
550aaaa431665d17554249508a2a4d047e4c37fb40e82738b01f73576e8d>
endstream
endobj

18 0 obj
<<
  /BaseFont /SimSun
  /Encoding /Identity-H
  /Subtype /Type0
  /Type /Font
  /DescendantFonts [ 19 0 R ]
  /ToUnicode 24 0 R
>>
endobj

19 0 obj
<<
  /Type /Font
  /Subtype /CIDFontType2
  /BaseFont /SimSun
  /CIDSystemInfo 20 0 R
  /FontDescriptor 21 0 R
  /W 23 0 R
>>
endobj

20 0 obj
<<
  /Registry (Adobe)
  /Ordering (Identity)
  /Supplement 0
>>
endobj

21 0 obj
<<
  /Type /FontDescriptor
  /FontName /SimSun
  /Flags 32
  /FontBBox [ -7 -140 1000 859 ]
  /ItalicAngle 0
  /Ascent 859
  /Descent -140
  /CapHeight 859
  /StemV 70
  /FontFile2 22 0 R
>>
endobj

22 0 obj
<<
  /Length1 176616
  /Length 11113
  /Filter [ /ASCIIHexDecode /FlateDecode ]
>>
stream
789ced9d796c1cd77dc7df9b999d63678fd99be292da590e7729792951d28aa2
28cbf28a14a95ba24452ded561ef8aa4243a92255b8a6c2775cba471adaee134
7f1445fee891f4081a2041878ed150fea37080a6e83f39da2240913a687ae568
90204873b57f74fb7b3343eaa85324815b05eef7f39de3bddf3be6bddf3b6616
9265c6196309ba28ccda3f3d3bf615e5cb3f648c6f21ebfae3d343db4e447ebc
9531c9a27873ee4aeb9a7dcafe11c5af51fcc6dccd1bb6f23aff1cc5ff99e2af
5fb876f1ca67e75fa3f2f115c6a2dfb9d8ba7e8d4d332acf7b283d7df1f2f317
befe1f9fbccd98fa61c68cf597165af3fffefdf37f41e97f4be93b2e9141e263
5fa6f88728de7fe9ca8de78c257691b18fae30ae775dbe3ad7fad8477fff2f19
ebfd63c63e10bbd27aeedac427e31fa1fc5394df7eaa756521fa9e0ddf624c26
1bfbdeb5abd76f74becd22942eda6b5f7b66e1da8913f1af53677f93daacdca4
e7f1f78dfd19a5bf269e77939e1766ec1ce31fffa2781ee3e4158d85598285d8
c32cdee9b03813fe0ab31e9274a9f5d4228b5d6edd788ac5d82a943ea6f2f789
5e1312b3d810bb4581af44bfe359643f5be75f45bbde0251ff9b9d37593f679d
ffecfc88fb96bb1853833c7f27923a1fee7c851becbe5c419ed0ae7fc8cafd5f
7822befb07ccf4337cfac3634be2fe8fbb3ef609aaff4db2be49d108b59405ed
5b22ef8798ce9698c86905f725cab397fac15526738178a67ed7334f3726c659
8dcdbffc25bffd4c9c4ad0ae1bec4fc408783129f0429aaedcbb2bace9dd2db2
286cfef8f499c7cebcbcf0d2c5c12b87df5b7ef94be477f656d6ce3ffde9967b
75bfaf023eddf9313d5ff2ce1bdef3d7cecedf53edcbc158d1c4a536a8a49877
55bd9845beb0c8a29162cca0d9a0b1757446291ca36b8eee192a6d78e52c9662
d9b55211cfa25238e25dfdf2296f56c5bd5ac26437a896384b524d222cca8bda
cc605669ecb4f0942246f902db168439d5580ec212e5ec0ac2f25d76e5ae7088
72b020ac7af6536c813dc3aeb34576953d456333cc3653ed557692ec17d9bbd9
65d6a2f4694abf42d777539e8f53ae71ca7d8d3d4f298b94eb12f9d3a6f61d60
c7d931b69f35d8418a4f50d905364769cf78752f52d82fb999eedbd816d25636
1884c57927bc8db15ae76cb5bb70a65a2b9cae760a8d6d9d427deb52e1b1adb5
c2a92d9dc2ec964a6166a85398de64174e6eae154e6cee14a6063b85e38395c2
b1872a85a30f750a4736760a87375885431b2a85831b3a850303b5c2fe814e61
b2dc294c943a857dfd4b85713ac79ceec25e67a950a3f3d1be5a614f5fa7f008
dd77173b8587ed4e6157a153185ddf29ececcd16467a2b851dbd9dc2706fadb0
bda753d8bc69a9b0a9b25418acd885d2ba4ea15fcfaf3bebe8ddebcef651ac98
ed14ec4857f66c21172daccf750abd64e8c9460bf9fc3a76a6ab2bcbce748b50
4e8432eb7666779e8e677827c3534793b3b503898e359b6c588de8d1c86ce8a8
321b69288df8526cd63c1a9ed58eaab3dc62b3b146b8a13658c338aacfca47a5
59bd21356c694a5a925ce9ab5248aed542fc36ade599cae115ad73f2b0ab4f9d
71f92db7342daeb513a75df596cb664f9fa92f73fec1c68bafbcc27ac70ebb1f
9aaebf4acbb377acb12c49e327eacb8afcc1c6755661954a8505aa04e1d52bbf
7e835756258ce2c6e9ee9f015e39be1af86fc13bb14aa58be6749c66ebf3ecd3
345737b38fdf66c9ce773f956347f595ce3756efafc52d764459e97cf5b54cce
0fd492c2941d8c648b6ad62ad692eca8b5d279a3b63bcc8e16b75819beef7226
3d281b9581c572e9c94a79b112b57b177bf24fda3d8b36cbca46269a4a2f468d
bd97a3a62c2da6e4bd97532a7bb452a123399a488ed2bd62fd395d28fc52850f
89b0f56debdbdbb66dd9eab57ca45c76fad44c3a5bddb66344eb2b0f6fdf51dd
96cd0d6f2f3bceb0b089a46a86f268ceb0aa9e0d597a3c61c5cdb8524c76f7a4
f4444809e966281c52144d554c550a251ed7b59e5c572e16ebefede92e68da0e
555515e577438a2acb29c3143b57b8f30df603f657b4d78cb18db5e4a091ceef
e9da3336660c6da86e289568eb181a1a1daa5613d5847fdb96a86ed99adb313c
ac6a033b768ce43455cb699991744e239bd3a70d54a9715e921fd93e40c9d591
9c93cde6327d5ab93ce078d12ab77272ae286774cbb0f4396e712b6a1a5be31b
72726a209ca5f03ede656c8aa6f6c53626ac50ac6828e948725b979dbcd89d93
7b4f5831a59832b497075269cd36a3b2d12ced48cac9b1f5b2b13e9c32b58dd1
d443555531cc5ae952244933c2ec7c8d7d9ffd0deb639ba8af03b5449f55b0d2
e9b21e0a95c7464672e51c7535499d4c046755f47484daeff76424e7f554b43d
93d5ca03c3d9a0c323e581916c3693569dbe4cd5cb3630e264551ac011f24235
f71e6e964f527fae9bc9c4665d3f60a52ff39c6217a2c7c8f88c1297f2aa2e29
c601239d4ecad18f48e184a41ab2c2f71b49ad4f36cc94540ca96a2c5d4be931
3da4706db76cbc2b9a94a23149d1e548525e27752763922c499a9530bd9e7ed3
1b5387e67f8d156a515bea9554b5f4f0d6ada952eaae5efa3dbc333caa373cde
50de3d86db07d63a3850ceadf58dba4605fbb40f196356f689cc8eee84ba7e43
54a1918c6ddf28f76db17651ff2e72538ec7c25ce1f291e81f4a4632145642fc
0f8c9495696b792b5b2e2b8a6ca636f59d4bebc9c77b865372a64a9d76c2bb24
3d1e52cd706cb4db8a70595623998899ea166fa208f5ef7becf3f406ec63036c
5d2d9ced8e3ba66d77b36eea9cd731bf676b8d1ed0441755cdefe380e81b8d1a
756e249bdb31f2742caacbb2249b675fb7b27ba2850d7b53f22385a171bef7a1
de483e6a8ec67abbcdcf1bf150c80c5b89ad56766fa53fa490e7fb2a513955a9
d46479d7c0c02e7ab39a9d7fa139f6d76c232bd52cbdac9619cbae4bf5a62c4b
ceca81e3ef2c256aa1e76bc75b34a24d81bb57578cdf5a6fbddce209fe90a13f
5cdecfc79c87c9b10bbc3bbc2f963e5ba4c6eec887d6536bfa53ea6042d2ebc7
4acaa669d9c8db117d20969ece28dc7466176911d0778449ebfd5bec73de3744
3f7d61ee61b3ec717a1fd3da1f9d7ba27afad4e46ce921bb5b89c532d5cc6a8b
b7f9a2c54f9bd5c80e6a20b548cb50e3879d0c85b2d4f83d52ee8ebbc5fee075
239dcb0501d55f32e47b359b4b3b7dde14a2cd4d18778c0c64b37ec991d5c071
cee35bf5a8cea3d56446e3d9ad92939522bd862a298a9a1ce53cabf30ccf687a
44cbe5c3afa468c1f090129165239e34cccc488f4c8b4a0e99295a5db22c87a2
1b5237d6197a543d954eabbffef2d3a6b66f7fb7d2b56d7c3a1d574246249996
e2e97dd998a9cfc6e3f66ff7c4c3da6d33a2c43545e1af1c8f44fb29a085c261
55d31545e289fde1445a35e3b19df18461c4e2f4cd4cf3f26bec8734faebe85b
68923d415f2f23b57533ac78a139f5c491b347a6a68a2959d38a1bfabbbb7716
77ae4d873b177f7b153ece699abf28038fd22cf057644e5ddd77efcfe08dc7bd
fbf2c8da545af3bfbf65d150a9aa57ead1b41ed91ab6b65baace252eab6ac688
27e474fa9261994a2aa1a50d73bb19af46698be29c36916b3cce7319296f8753
e1a811be4423908d24aa6133d453d4c5bccca6e25cd52439ac7d3112b2c29661
d0de16d2a35a241e9333a574341596737db99892a0b430e553544b3f7bc80ceb
f9f8de5c44ce6dca5972ca3452a998a9c523c9c7a3462846be97d4b3b2918a25
a25a389c125fa5e2cdf543f605fadeed613b69479f61a3b5ee3d23a343ea081f
9a993a7a74a82b93191aac6eac8e8cf40ff5dfbbfad6fc9df0d7a198769ae66d
6fb47f0b170e0c07bb3eb9b1aaa673599ab2de9631502d0fe7b474ce73bf2817
ec30a2a058c3abe59ca21c4b2a4a4891e4a42327745db3423ca29bc6809a34fe
4857244a504aebe587c9744aea32785f345993c309dafdb9aca8b19d65ee385a
a42b625086d148bcf886144e59b21c89fdce80dc1d89c4126af831d90847b4f3
1b73dd51b5e7c823b251e88d6ab9442c3dff7b5a24aa87a3b14f984a2ca12755
e5806c881d80d5265ffab5173ff0abef7fdfd2affcf20bbff4def73cffdcb337
df7de3fa334f5fbbfad495cbef7a72f1d2c50b0bf373e75bcd271e3f77f6cce9
46fdb153b333d327a68e1f3b7ae4f0a18307f64f6e28586163902f9be171677c
21bc69902d874d0a9a9b06b9ab8ebb9a67748f576cfa58ac170f9fac4feccb17
8b8dbc53746bae529a10676bbe3db79ad0a02aa81495a52a0e4f3b874f9caedb
13eda6974896997b627efaceb5b420e44ae3337577b242b1bbe2fbbdf85af4c0
7dc90757931ddb6553edf6fc32934b64afe597b917088dbfdca09e341cf77cc5
293af505cabb4c3fca8a33cd710a455643dcde4f35da2b163b4fe7dc63ce0a0f
42a7ebaeddbcd03840b9995472bd637a850d3bcff9e1a66bcfd9b6ab969cf353
f576d1e54d271fc44fd6c963bc956f179da2dd68ac743ed323723b45aa4b6263
cb0ebf7562b9c66f4d9faedfb6e857f2ad99faab1297c69bf409de4f69f5db36
0db8679584551845c416117698d3c8bc2ae95efefced1afd54f75215cfe0c5e7
a8179e4d5fb57136b722f936cb7f50d97b508dbe25e756143fa5b69a5b219bee
db963c9b07f9817c5f0b876a7acda845a4a844de16a657c9f23afd123738fb54
8447797e994a9df4cc2b7c69d9a8e5fd1c4b94a3e6b7f0d6ec9d47cf9eae7f2a
c2a89877a5078d09360d4e2c4bc72ace9df978a24e6e9f58e6c72a4d6f4ecaa5
099b66a35b9bae8b9ccd3ccdc87d9b06c58cb0ebce42de692ca7d3ed6b135483
b3dc52cbcd4adb9f18623a38d62e9a4c72e9e09c33d914396872d371904c73a7
eca67bbe59a1a06d4db627c5d8b5446e965d96e4d232574a7c0fdb437d57236e
d85918734d676c2de551f6a89fa28a14cd197379d6f7dc843361772db6e79cf3
344f6a53f58bf90b8d16d5edd69c96ab3863f965858dd1aceee2d489896576ac
42bd394c33e57865ea0c2d25d173bbddde672fd794726bae25e2fb8ae4897690
e4ecdbd7b8abc484dd766badb926e59868789969bd9071c269d9f3e452ea2ef9
6ada113f0d4f8b3233a7ebedc8bc33ef90436bb5768bba9db7e71af97663ce73
3095a7a6b14d83a13b7b48b08548626596e62ed065c566e79bce79df20d6d0fd
b68bf71b2e50aebb6dce21f138efcebd7bfb9033314f39c4d99a77659a5c457b
bee1cf0f36e5adee9f9889df95c9a631f52a6f5b0fafc67810a3081d6df7e2bd
d14b6bd1497136c96b9bfdb9e22a6531d7ea45f7c9bc7bb95159cbd27297cedb
6ddb727639e2e215de2fcea61ba2c0d25c4b6c21aa987b64384406bb7e9e662f
5538d96cafce382aa694d79ee43e55b9a74adaf8f80c3d5a2a89eeb84b5376b3
61379b64a5a552ccdb6e88eef68596985c62739cf2fb33453b34dd5aed692acb
1af4d0bcabd13e7da1b5e014694f255ba3e17b5fb451a1d6b1e9bacbf2edb6d3
763935b1344999a9fab2ab960f8a1b1dd72a4e6b8106513ccf6e2d786527a9b9
9e77446df909a7d8a02c52c9f325398e76a3f3e232d7a6d9e89ea3d5162a25da
c9b63ddaaebfceced1b6a894e74e3569f3b62d7bd2f686ba45335938e1a08835
a8223fa3511219a9bc7794dd2b95e5735ae98ec53bae56fcccba572bb5ec64dd
9d5acda27907059eaeb8526e27258acef393f40e50bc8112ce0b950e927b6b34
abf2a2b4ed4a33f56078bcf20745d1fcea80f9c5c8e26d9de2e5555c6dafe9b7
d77fa8ea1d11ef304aae5ea28176156a839fac89eedc990414a646fb6564afb9
7e07284c8fb28314af23cd20a29416bc3ef92f2d5bec96f43a6f39e2ccaf74de
98a2b766d31167a3211eaf7b0f1225bcaadb7ec5c25daa487c2b57044ff20f53
1c07bd2edc6d0e7b87e6b559a4f95d0addebf8c07bb73b6f30df73c500316744
2f5f0a5665b0ee16f2eea54665de2fa5063bb84d3b2aeddc7327bc6f8233b41a
9ca246fb18759f5695ed4e57e89de1f5ed25dfab87fcdd41cc4a3ee9b0499a43
41806599cb9c035c5c182d2de7802b51742de4bc2a31ae3b3bc5cd70762e4b5c
a3dd5e6c465634421b7d7bae39efbf4ec9cb6c677eb7f88051bd8136bcb1bd29
b6a6997a28af34bc2953769fad04b3d8bfdeacaca53f2bd6a4b6ea495da4b5d7
12435e75cffa73a31c5c6f56f4b72cd5d67fba87e9c168ba86972676a3b2fe3f
3f4af607e8903f5c8724bfe643fe3e41d6f25cbb2db6b6e57331b14223e504d9
93d4b4516ae468d04af2cd2f5153a6c4a375cfe24569b969a239feb0954c4ab0
28ef67fca96d52a245adf94cdecf45c7ed4e87ddacace6f69d40ed0e97fc791e
2407a5fdd9f96ca541a149713629cba43883956406ab3472dfae1f54ef8fa971
6fa2b3569978d13b6b358ad8328fd097aa920fd113cbb645eedae5f9b34c4da5
787bd732d7ca418690c8209576b5dbe6eafe2fb6ffdbf499c8bc4f40d668df6f
705fa0f1a0b18ebe758a7ebf35ea9983518eaedd8531580ee171d71c17df2fe2
dd648809b099c6f785cf067b8ef7397197633c93588a775bbb84efb5d52de16a
65b5ecaadf2e784b3a287b9f75a6fe025985a73e2bde242ea77ba85c14675eb8
ce7b9a98e3572bc1c7ea0b6274dfef55f7fe8a6d2fd277d638a7af2d7a512e8a
57952d72eb656f936bd307cf62abe5ed43de8f8d2efa963a29be70e93bddb16c
be9bedf67fb238c1af017a0728a5faeefc6883befe573adfec69f85b95442f79
3a67dab66d2528a96d27e9e780fba2e7de20cdf16cf41657cb412ed183176971
8a7c6ff9a75a0f96df82200882200882a0ff7d71138220088220088220088220
0882200882a077ac96fe8ff45d0882200882200882200882200882de69921e81
20e86dd0072108822008822008827e1ac9bb2108822008822008822008822008
8220088220087ac0fa3708822008822008822008822008822008822008822008
8220e8274bf90dc638033f9125167fd04d00000000000000000000000080b703
ce58f841b7010000000000000000000000000000000000000000000000000000
0000003f1b9c31f341b7e1ede49dd61f00000000000000000000000000000000
00000000000000e09d08672cf2a0db0000000008f077d0010000000000000000
0000000000f076823f7b00000000000000000000000000000000000000000000
0000000000000000000000f0ff1dfcdbb3000000000000000000000000000000
00000000000000000000000000000000000000000000000000e0e7853316e60f
ba11bfc0c037000000000000000000000080770a9c31f341b701000000000000
00000000000000000000000000000000000000000000003f1b9c31e341b7e1ed
04ff7d030000000000000000000000000000000000000000000000f08b0f672c
f6a0db0000000008c4ff73f541b7010000000000000000000000000000ef1c38
63f107dd06000000000000000000000000000000000000000000000000000000
000000000000e041827fe70f0000000000000000000000000000000000000000
0000000000000000000000000000000000000000fcbc70c6a2ff055ec9ce30>
endstream
endobj

23 0 obj
[ 71 [ 500 ] 1411 [ 1000 ] 4487 [ 1000 ] 4539 [ 1000 ] 7095 [
    1000 ] 7516 [ 1000 ] 9083 [ 1000 ] 12630 [ 1000 ] 16901 [
    1000 ] ]
endobj

24 0 obj
<<
  /Length 588
  /Filter [ /ASCIIHexDecode /FlateDecode ]
>>
stream
789c5d91dd6ac4201085ef7d0a2fb7174b7e4d520881ba61692efa43d3174874
b2151a23c65ce4ed3bbadb2d5450f83ce7c8cc189dbab6d3cad1e8dd2ea20747
27a5a58575d9ac003ac2456992a4542ae16e144e310f864418eef7d5c1dce969
21751d7da0b63abbd3c3935c467820d19b956095bed04327413be576bcec3763
be6146a631691a2a61c2c75e06f33acc40a3903dfefa8fcf7ffae76e80a68193
6b396291b09a41801df405481de36a687dc6d510d0f29ffe784d8d93f81aac77
e725bae3b8c81b24566548f99965484952798d715606e23c50c53d71eeb58255
416bd9c953999e90d2acf4cea2cdbd334b588154f2b440cad3982155bc65a1ba
5b1dbe4e3fd0fb08c4662d761fa61e1af72d2b0df78f318bf1a9b07f00e3e087
d5>
endstream
endobj

25 0 obj
<<
  /Length 588
  /Filter [ /ASCIIHexDecode /FlateDecode ]
>>
stream
789c5d91dd6ac4201085ef7d0a2fb7174b7e4d520881ba61692efa43d3174874
b2151a23c65ce4ed3bbadb2d5450f83ce7c8cc189dbab6d3cad1e8dd2ea20747
27a5a58575d9ac003ac2456992a4542ae16e144e310f864418eef7d5c1dce969
21751d7da0b63abbd3c3935c467820d19b956095bed04327413be576bcec3763
be6146a631691a2a61c2c75e06f33acc40a3903dfefa8fcf7ffae76e80a68193
6b396291b09a41801df405481de36a687dc6d510d0f29ffe784d8d93f81aac77
e725bae3b8c81b24566548f99965484952798d715606e23c50c53d71eeb58255
416bd9c953999e90d2acf4cea2cdbd334b588154f2b440cad3982155bc65a1ba
5b1dbe4e3fd0fb08c4662d761fa61e1af72d2b0df78f318bf1a9b07f00e3e087
d5>
endstream
endobj

xref
0 28
0000000005 65535 f 
0000000042 00000 n 
0000000096 00000 n 
0000000162 00000 n 
0000000221 00000 n 
0000000006 00002 f 
0000000026 00002 f 
0000000494 00000 n 
0000000648 00000 n 
0000000789 00000 n 
0000000870 00000 n 
0000001085 00000 n 
0000012318 00000 n 
0000012472 00000 n 
0000013158 00000 n 
0000013418 00000 n 
0000018564 00000 n 
0000018645 00000 n 
0000019194 00000 n 
0000019343 00000 n 
0000019486 00000 n 
0000019568 00000 n 
0000019776 00000 n 
0000031007 00000 n 
0000031161 00000 n 
0000031847 00000 n 
0000000027 00001 f 
0000032533 00001 f 

trailer
<<
  /Size 28
  /Root 1 0 R
  /ID [ <BFF25D4F5B2EBB04E02FD2A979A55577> <2760CAE136EBBD2AA8D2AB702637ABC3> ]
>>
startxref
32533
%%EOF

我来逐块分析这个 PDF 文档,并与之前的文档进行比较:

1. 文件头 (Header)

相同:%PDF-1.7 版本,都由 MuPDF 1.27.0 生成

2. 对象定义 (Object Definitions)

重大变化:页面数量恢复为1页

pdf 复制代码
2 0 obj
<<
  /Type /Pages
  /Count 1                    ← 页数从5变回1
  /Kids [ 4 0 R ]             ← 只保留对象4作为页面
>>
endobj

页面对象4:现在包含实际内容

pdf 复制代码
4 0 obj
<<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [ 0 0 595 842 ]
  /CropBox [ 0 0 595 842 ]
  /Resources <<
    /Font <<
      /AFSF1 7 0 R            ← 添加了字体资源
    >>
    /ExtGState <<
      /JYE1 16 0 R            ← 添加了图形状态
    >>
    /XObject <<
      /AFSX1 15 0 R           ← 添加了图像对象
    >>
  >>
  /Contents 17 0 R            ← 添加了页面内容流
>>
endobj

新增大量对象支持内容显示

  • 字体对象 (7-13): SimSun 宋体字体
  • 图像对象 (14-15): 84×50 像素的图像
  • 图形状态对象 (16)
  • 页面内容流对象 (17)
  • 更多字体对象 (18-25): 另一组字体定义

3. 详细对象分析

对象7-13:字体系统1

  • 对象7: Type0 字体(SIMSAB+SimSun)
  • 对象8: CIDFontType2 字体描述
  • 对象9: CID系统信息
  • 对象10: 字体描述符
  • 对象11: 字体数据流(压缩的字体文件,18MB原始大小)
  • 对象12: 字符宽度表
  • 对象13: ToUnicode 映射表

对象14-15:图像系统

  • 对象14: 灰度蒙版图像(84×50)
  • 对象15: RGB图像带蒙版(84×50)

对象17:页面内容

包含实际的绘制指令(已压缩)

对象18-25:字体系统2

  • 重复了类似的字体结构,但名称略有不同

4. 交叉引用表 (Cross-Reference Table)

pdf 复制代码
xref
0 28                          ← 对象数量大幅增加到28个
...(省略详细条目)
  • 共28个对象(26个在用,2个空闲)

5. 文档尾 (Trailer)

pdf 复制代码
trailer
<<
  /Size 28                     ← 大小从13变为28
  /Root 1 0 R
  /ID [ <BFF25D4F5B2EBB04E02FD2A979A55577> <2760CAE136EBBD2AA8D2AB702637ABC3> ]
>>
startxref
32533                         ← 交叉引用表起始位置从935剧增到32533
%%EOF

与之前文档的主要区别:

1. 内容变化:从空页面到有内容的页面

  • 之前:5个空页面,无任何资源
  • 现在:1个包含内容的页面,有字体、图像和文本

2. 页面数量减少但内容丰富

  • 之前 :5页 → 现在:1页
  • 虽然页面减少,但单页内容丰富

3. 对象数量大幅增加

  • 之前 :13个对象 → 现在:28个对象
  • 增加了字体、图像、图形状态等资源对象

4. 文件结构复杂化

  • 包含两个字体子系统(对象7-13和18-25)
  • 包含图像和蒙版系统
  • 包含页面内容流(对象17)

5. 文件大小剧增

  • 之前:交叉引用表在935位置
  • 现在:交叉引用表在32533位置
  • 文件大小增加了约30倍

6. 修改日期变化

  • 之前D:20260201101954+08'00' (10:19:54)
  • 现在D:20260201103648+08'00' (10:36:48)
  • 相差16分54秒

7. 页面内容分析

  • 使用了中文字体(SimSun 宋体)
  • 包含84×50像素的图像
  • 页面有实际的绘制内容
  • 可能包含中文字符

8. 文档ID再次变化

  • 与前两个文档都不同

关键特点:

  1. 中文支持:包含SimSun字体,表明文档包含中文内容
  2. 图像内容:包含一个84×50的图像
  3. 真实文档:不再只是框架,而是有实际内容的PDF
  4. 资源重用:字体数据被压缩存储(FlateDecode)

这是一个包含中文字体和图像的完整PDF文档,与前两个框架文档有本质区别。

相关推荐
东东5164 小时前
果园预售系统的设计与实现spingboot+vue
前端·javascript·vue.js·spring boot·个人开发
rainbow68894 小时前
Python学生管理系统:JSON持久化实战
java·前端·python
打小就很皮...4 小时前
React Router 7 全局路由保护
前端·react.js·router
起风的蛋挞4 小时前
Matlab提示词语法
前端·javascript·matlab
有味道的男人4 小时前
1688获得商品类目调取商品榜单
java·前端·spring
txwtech4 小时前
第20篇esp32s3小智设置横屏
前端·html
Exquisite.4 小时前
企业高性能web服务器---Nginx(2)
服务器·前端·nginx
DFT计算杂谈4 小时前
VASP+PHONOPY+pypolymlpj计算不同温度下声子谱,附批处理脚本
java·前端·数据库·人工智能·python
广州华水科技4 小时前
如何选择合适的单北斗变形监测系统来保障水库安全?
前端