CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  非技术类

[原创]PDF知识讲座(1)

楼主bobob(静思)2005-06-09 17:30:51 在 VC/MFC / 非技术类 提问

 
  PDF知识讲座一  
   
  pdf(Portable   Document   Format,便携式文档结构)是一种很有用的文件格式,其最大的特点是  
  平台无关而且功能强大(支持文字\图象\音乐\视频).今天先讲一下pdf的文件(物理)结构  
  PDF文件结构可分为以下几块:  
  1.header:  
  pdf文件的第一行,格式如下:  
   
  %PDF-1.3  
   
  表示当前文件的版本是1.3(目前最高版本为1.5)  
   
  2.body:  
  pdf文件中用到的所有对象,包括文本\图象\音乐\视频\字体\超连接\加密信息等等,格式如下:  
   
  2   0   obj  
  ...  
  end   obj  
   
  其中省略号部分是pdf规定的任意合法对象(一共8种)  
   
  3.cross   reference   table:  
  所有pdf对象的引用表,其格式如下:  
   
  xref  
  0   5  
  0000000000   65535   f  
  0000000009   00000   n  
  0000000074   00000   n  
  0000000120   00000   n  
  0000000179   00000   n  
   
  其中,xref是开始标志,表示以下为引用表内容;0   5表示从对象号为0的开始,  
  连续有5个对象(0,1,2,3,4),分别用5行来表示.每行的前10个数字代表这个  
  这个对象相对文件头的偏移地址,后面5个数字只有当这个对象被删除的时  
  候才有用,表示这个对象被删除后又被重新生成后的对象号最后一位f或n表  
  示对象是否被使用(n表示使用,f表示被删除或没有用)  
   
  4.trailer:  
  整个pdf文件的入口点,形式如下:  
  trailer  
  <<  
  /Size   8  
  /Root   1   0   R  
  >>  
  startxref  
  553  
  %%EOF  
   
  /size   :这个pdf中总共使用了多少个对象  
  /root   :这个pdf文件的catalog对象的对象号,这是pdf中最顶层的对象  
  /startxref:   后面的数字表示cross   reference   table的开始位置  
  /%%EOF   :文件结束符.  
   
  实际一个pdf文件是很复杂的,但是上面几个部分是确定的,只能多不能少.下一讲我说一下pdf里面8种类型. 问题点数:20、回复次数:36Top

1 楼fisker0303(天塌了,地陷了,小花狗不见了.)回复于 2005-06-09 17:41:07 得分 1

学习,支持...   ...Top

2 楼ukyo1(**)回复于 2005-06-09 19:09:07 得分 1

太复杂。Top

3 楼laiyiling(陌生人[MVP])回复于 2005-06-09 19:34:12 得分 1

楼主出研究成果啦!SPTop

4 楼pomelowu(羽战士)回复于 2005-06-09 19:49:49 得分 1

陌生人加精吖Top

5 楼lemon_wei(研究BT,做好P2P)回复于 2005-06-09 21:03:19 得分 1

研究出成果了。Top

6 楼bobob(静思)回复于 2005-06-10 08:45:15 得分 0

以下是一个完整的pdf源文件,内容是显示一个"hello   world",对照上面的说明应该能看个差不多  
  下一讲我主要把pdf的8种对象类型说一下:)  
   
  %PDF-1.0  
  1   0   obj  
  <<  
  /Type   /Catalog  
  /Pages   3   0   R  
  /Outlines   2   0   R  
  >>  
  endobj  
  2   0   obj  
  <<  
  /Type   /Outlines  
  /Count   0  
  >>  
  endobj  
  3   0   obj  
  <<  
  /Type   /Pages  
  /Count   1  
  /Kids   [4   0   R]  
  >>  
  endobj  
  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  
  5   0   obj  
  <<   /Length   44   >>  
  stream  
  BT  
  /F1   24   Tf  
  100   100   Td   (Hello   World)   Tj  
  ET  
  endstream  
  endobj  
  6   0   obj  
  [/PDF   /Text]  
  endobj  
  7   0   obj  
  <<  
  /Type   /Font  
  /Subtype   /Type1  
  /Name   /F1  
  /BaseFont   /Helvetica  
  /Encoding   /MacRomanEncoding  
  >>  
  endobj  
  xref  
  0   8  
  0000000000   65535   f  
  0000000009   00000   n  
  0000000074   00000   n  
  0000000120   00000   n  
  0000000179   00000   n  
  0000000322   00000   n  
  0000000415   00000   n  
  0000000445   00000   n  
  trailer  
  <<  
  /Size   8  
  /Root   1   0   R  
  >>  
  startxref  
  553  
  %%EOFTop

7 楼fzd999(花差花差)回复于 2005-06-10 09:24:10 得分 1

不错不错~Top

8 楼junhuang09()回复于 2005-06-10 09:42:27 得分 1

学习......Top

9 楼xjtuzhw(飞影(★和谐社会,狗才谈政治★))回复于 2005-06-10 10:29:08 得分 1

Mark先Top

10 楼laiyiling(陌生人[MVP])回复于 2005-06-10 10:31:43 得分 1

结贴后加精Top

11 楼bobob(静思)回复于 2005-06-10 10:40:37 得分 0

结贴后加精  
   
   
  ==========>  
  谢谢陌生人!:)  
   
  现在就结了吗?  
  Top

12 楼autoegg(哲学指引生活 && (动心忍性,增益其所不能))回复于 2005-06-10 11:38:43 得分 1

期待续篇Top

13 楼laiyiling(陌生人[MVP])回复于 2005-06-10 13:02:40 得分 1

如果这一讲没内容了,就可以结。Top

14 楼fucr_364204()回复于 2005-06-10 13:49:02 得分 1

楼主真厉害,学习收藏。Top

15 楼vcleaner(我没当大哥很久了.......)回复于 2005-06-10 13:52:17 得分 1

UP,学习!Top

16 楼fucr_364204()回复于 2005-06-10 14:01:07 得分 1

请问怎样才能把文本从里边单独取出来?如取出"hello   world!"  
  期待下一讲Top

17 楼newcore(to be or not to be, it's a question.)回复于 2005-06-10 17:42:21 得分 1

mark  
  Top

18 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-06-10 18:05:20 得分 1

建议先从分类讲起好点,如obj,stream等以及array如何表示等  
   
  再详细说如何读取,如我是从startxref后面的数字即索引读起,然后从xref中定位每个对象的位置Top

19 楼netying()回复于 2005-06-10 19:50:31 得分 1

支持!!Top

20 楼lanphaday(恋花蝶)回复于 2005-06-10 20:34:28 得分 1

踩  
  个  
  脚  
  印  
  以  
  后  
  慢  
  慢  
  看  
  !Top

21 楼Imisspassword(NOMONEY)回复于 2005-06-10 20:41:29 得分 1

后生可畏.  
  Top

22 楼Featured(我握着爱情的门票静静排队……)回复于 2005-06-10 23:00:39 得分 1

这样子支持中文不?  
   
  我以前也自己使用UE分析过PDF格式,  
  但是不支持中文滴Top

23 楼galois_godel()回复于 2005-06-10 23:19:12 得分 0

markTop

24 楼laker_tmj(laker)回复于 2005-06-11 13:33:32 得分 0

up   learnTop

25 楼bobob(静思)回复于 2005-06-11 15:17:45 得分 0

中文当然支持,不过要麻烦很多,我也正在研究:)  
  这一讲就这些,我就先结了,过两天把下一讲贴出来Top

26 楼nlstone(天外流星)回复于 2005-06-11 16:18:08 得分 0

赶紧markTop

27 楼zxwitsme(Program is an art!)回复于 2005-06-15 16:25:01 得分 0

markTop

28 楼lsaturn(土星-站了一晚)回复于 2005-06-21 18:04:42 得分 0

揭贴了?Top

29 楼rivershan(阿门)回复于 2005-06-22 17:21:06 得分 0

有xpdf可用,研究格式没啥太大意义,让你更熟练而以Top

30 楼iPanda(傻傻猫)回复于 2005-06-23 15:32:22 得分 0

收藏!!Top

31 楼gx_lqh(Flex)回复于 2005-07-12 14:04:50 得分 0

請教:如何在VC++實現如PDF裏面Hand抓手工具來上下左右拖動窗口客戶區??(能有個例子最好)希望各位大蝦不吝賜教~~小弟我跪求幫助!!謝謝..Top

32 楼BigF(M_M)回复于 2005-07-14 13:45:34 得分 0

markTop

33 楼yujia120(永不停息)回复于 2005-07-26 16:32:31 得分 0

upTop

34 楼huang_yi_cn(蓝色的云)回复于 2005-08-04 10:12:27 得分 0

markTop

35 楼bobob(静思)回复于 2005-08-05 11:36:48 得分 0

奇怪呀,揭贴了之后都可以回啊?Top

36 楼littlebao(爱拼才会赢)回复于 2005-08-25 13:01:44 得分 0

markTop

相关问题

  • PDF知识讲座(2)
  • PDF知识讲座[3]——如何生成pdf文件?
  • 泡mm知识讲座(现身说法版)
  • 免费讲座!
  • 寻找讲座!!!
  • 奖励原创 :)
  • 原创天空
  • [原创]逃离
  • 听B.S.的讲座有感
  • socket5程序设计讲座

关键词

  • 文件
  • 数字
  • 中文
  • pdf
  • 对象
  • endobj
  • startxref
  • 格式
  • 表示
  • 删除

得分解答快速导航

  • 帖主:bobob
  • fisker0303
  • ukyo1
  • laiyiling
  • pomelowu
  • lemon_wei
  • fzd999
  • junhuang09
  • xjtuzhw
  • laiyiling
  • autoegg
  • laiyiling
  • fucr_364204
  • vcleaner
  • fucr_364204
  • newcore
  • vcmute
  • netying
  • lanphaday
  • Imisspassword
  • Featured

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo