使用php解析pdf文件之 (一) 理解PDF源码

  • 发布时间 2015-02-12
  • 分类 php

本文主要讲解PDF文件源码语法,理解PDF文件源码格式才能正确的解析PDF文件

2.源码内容

%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream xM Â0…÷=Åwí$mjâB
........
endobj xref 0 75 0000000000 65535 f 0000230284 00000 n 0000000253 00000 n 0000214387 00000 n 0000000022 00000 n 0000000234 00000 n 0000000358 00000 n 0000004450 00000 n 0000003201 00000 n 0000214556 00000 n 0000000465 00000 n 0000003180 00000 n 0000003237 00000 n 0000004429 00000 n 0000004858 00000 n
........
trailer << /Size 75 /Root 50 0 R /Info 1 0 R /ID [ ] >> startxref 230428 %%EOF

3.PDF文件的基本组成:

  1. 文件头 header,指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。 > %PDF-1.3
  2. 文件体,PDF文件的主要部分,由一系列对象组成。 > obj << /Length 5 0 R /Filter /FlateDecode >> stream xM Â0…÷=Åwí....... endobj
  3. 交叉引用表,为了能对间接对象进行随机存取而设立的一个间接对象的地址索引表 > xref 0 75 0000000000 65535 f 0000230284 00000 n ..... 0000230264 00000
  4. 文件尾,声明了交叉引用表的地址,指明了文件体的根对象(Catalog)等。 > trailer << /Size 75 /Root 50 0 R /Info 1 0 R /ID [ ] >> startxref 230428

    4.文件尾 Trailer:

第一个编号为1 0的obj,类型是页面树,它的子节点是编号为2 0的对象,页码总数是1 第二个编号为2 0的obj,类型是页面,它的父亲是编号为1 0的对象,页面的大小未612*792,内容在编号为4 0的对象,它有2个资源,1个是字体在编号为5 0的对象,另个是图片编号为6 0的对象