OA办公软件与PDF文件联系紧密,PDF格式的文件也是办公人员必须掌握的!  设为首页 加入收藏夹 我来推荐 
您的位置:首页 > PDF应用技术 > PDF开发技术
PDF开发技术
PDF文件结构的分析
日期:2009-04-17 21:20:49 人气: 标签:

5. PDF的基本语法: 
文件的第一行是文件头,指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。 
一个对象的第一行一般有两个数字和关键字“obj”。例如: 

3 0 obj 
<< 

/Type /Pages 
/Count 1 
/Kids [4 0 R] 
>> 

endobj 

第一个数字称为对象号,来唯一标识一个对象的,第二个是产生号,是来表明它在被创建后的第几次修改,所有新创建的PDF文件的对象号应该都是0,即第一次被创建以后没有被修改过。上面的例子就说明该对象的对象号是3,而且创建后没有被修改过。 
对象的内容应该是包含在<< 和>>之间的,最后以关键字endobj结束. 

6.             文件Hello World的文件分析: 
6.1.文件的具体分析
%PDF-1.0         
文件头,说明符合PDF1.0规范 

1 0 obj 
<< 

/Type /Catalog 
/Pages 3 0 R 
/Outlines 2 0 R 
>> 

endobj 
Catalog对象(根对象) 

2 0 obj 
<< 

/Type /Outlines 
/Count 0 
>> 

endobj 
outline对象(此处它的计数为0,说明没有书签) 

3 0 obj 
<< 

/Type /Pages 
/Count 1 
/Kids [4 0 R] 
>> 

endobj 
pages对象(页面组对象),/Type /Pages 说明自身的属性,对象的类型为页码,/Count 1说明页码数量为1,/Kids [4 0 R]说明页的对象为4, 这里要说明的是如果有多个页面,就多个页面直接连续下去,比如说/Kids [4 0 R 10 0 R], 就说明该PDF的第一页的对象号是4,第二页的对象号是10。 

4 0 obj 
<< 

/Type /Page 
/Parent 3 0 R 
/Resources << /Font << /F1 7 0 R >> /ProcSet 6 0 R >> 
/MediaBox [0 0 612 792] 
/Contents 5 0 R 
>> 

endobj 
页对象,/Parent 3 0 R说明其父对象的对象号为3,/Resources << /Font << /F1 7 0 R >> /ProcSet 6 0 R >>说明该页所要包含的资源,包括字体和内容的类型,/MediaBox [0 0 612 792]说明页面的显示大小(以象素为单位),/Contents 5 0 R说明页面内容对象的对象号为5。 

5 0 obj 
<< /Length 44 >> 
stream 
BT 
/F1 24 Tf 
100 100 Td (Hello World) Tj 
ET 
endstream 
endobj 

<< /Length 44 >>说明stream对象为字节数,从BT开始,ET结束,包括中间的行结束符。 
Stream说明一个流对象的开始。 
BT说明一个文字对象的开始。 
/F1 24 Tf,Tf说明True font对象,字体明为F1, 大小为24个象素。 
100 150 Td (Hello World) Tj,100 100 说明这一行文字放置的位置,对于Td, 我们可以这样理解,我们的当前X,Y坐标分别加上100和150就是文本的位置,因为在该例子中只有一个对象,那么它的位置就是(100,150), 如果下个对象位置信息为100, 50 Td, 那么它的位置应该就是(100+100, 150+50)也就是(200,200)。(Hello World) Tj说明文本的内容,当然,如果这里是文本的内容可以写成16进制,用<>包含。 
ET说明文字对象的结束 
endstream流对象的结束 

6 0 obj 
[/PDF /Text] 
Endobj 
[/PDF /Text]说明PDF的内容类型仅仅为文本,如果有图片则为[/PDF /Image] 

7 0 obj 
<< 

/Type /Font 
/Subtype /Type1 
/Name /F1 
/BaseFont /Helvetica 
>> 

endobj 
Object six defines the 
字体对象,不再多作解释。 

共有条评论信息评论信息
栏目分类

站点说明 | 站点导航 | 站点公告 |
OAPDF.COM版权所有 2009 V1.1