(十二)一个简单的pdf文件体
%PDF-1.0 % 文件头,说明符合PDF1.0规范
1 0 obj %对象号 产生号(修改次数)
<< %对象的内容应该是包含在<< 和>>之间的,最后以关键字endobj结束
/Type /Catalog %对象类型:Catalog(跟对象或者称为目录对象)
/Pages 2 0 R %包含的页面对象的对象号是2
/Outlines 3 0 R %包含的外部引用的对象号是3
>>
endobj
2 0 obj
<<
/Type /Pages %对象类型:页面对象
/Count 1 %包含的子对象(页对象)1个
/Kids [4 0 R] %页的对象号(子页)是4(如果有多个页面,就有多个页面的引用)
>> %例如:/Kids [4 0 R 10 0 R] 说明该页第一个对象号是4,第二个对象号是10
endobj
3 0 obj
<<
/Type /Outlines %对象类型:Outlines(书签对象)
/Count 0 %包含的子对象(书签对象)0个
>>
endobj
outline
4 0 obj
<<
/Type /Page %对象类型:page(子页对象)
/Parent 3 0 R %父对象的对象号是3
/Resources << /Font << /F1 7 0 R >> /ProcSet 6 0 R >> %该页要包含的资源,字体(存放于对象7)和内容样式(存放于对象6)
/MediaBox [0 0 612 792] %该页的显示大小,像素为单位
/Contents 5 0 R %子叶包含的内容(存储于对象5)
>>
endobj
5 0 obj
<< /Length 44 >> %stream对象的字节数,从BT开始,ET结束,包括中间的行结束符
stream %流对象的开始标志
BT %文字对象的开始标志
/F1 24 Tf %字体问F1,大小为24
100 100 Td (Hello World) Tj %100,100为文字放置位置, Td代表相对坐标的意思,Tj说明前边是文本内容
ET %文字对象的结束标志
endstream %流对象的结束标志
endob
6 0 obj
[/PDF /Text] %说明仅仅是文本,如果有图片[/PDF /Image]
Endobj
7 0 obj
<<
/Type /Font %类型是字体对象
/Subtype /Type1 %
/Name /F1 %字体代号?
/BaseFont /Helvetica %字体名称
>>
endobj
xref %交叉引用表的开始
0 8 %对象号从0开始,一共有8个对象
0000000000 65535 f %f表示free 对象0的起始地址0 产生号为65535,这个也是最大号
0000000009 00000 n %n表示对象在使用,对象1,9表示偏移地址,0表示对象未被修改
0000000074 00000 n %
0000000120 00000 n %
0000000179 00000 n %
0000000322 00000 n %
0000000415 00000 n %
0000000445 00000 n %
Trailer %文件尾对象的开始
<<
/Size 8 %pdf的对象数目
/Root 1 0 R %根对象号为1
>>
startxref %
553 %交叉引用表的偏移地址
%%EOF %文件结束标志
trailer
(十二)一个简单的pdf文件体的更多相关文章
- 一个简单的makefile文件
一个简单的makefile文件:可以编译指定目录下的所有c和cpp文件,暂未加入自动头文件的依赖. #!/bin/bash #编译器 CROSS_COMPILING_PATH = #源文件路径 VPA ...
- ubuntu14.04 配置g++工具,并运行一个简单的c++文件
首先,对Ubuntu 14.04 LTS进行源更新,摘自下述链接: http://chenrongya.blog.163.com/blog/static/8747419620143185103297/ ...
- salesforce 零基础学习(四十二)简单文件上传下载
项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...
- VS2017生成一个简单的DLL文件 和 LIB文件——C语言
下面我们将用两种不同的姿势来用VS2017生成dll文件(动态库文件)和lib文件(静态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件(动态库文件) 生成动态库文件 姿势一 ...
- wpf编写一个简单的PDF转换的程序
wpf 调用Spire.Pdf将PDF文件转换为其他文件模式 首先在Nuget里下载该第三方包Spire.Pdf. 然后可以编写程序 //这里我调用的是解析成流模式,这是因为我要使用ProgressB ...
- 扩展Python模块系列(二)----一个简单的例子
本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...
- JBoss 系列七十:一个简单的 CDI Web 应用
概述 本文通过一个简单的 CDI Web 应用演示dependency injection, scope, qualifiers 以及EL整合.应用部署完成后我们可以通过http://localhos ...
- how tomcat works 读书笔记(二)----------一个简单的servlet容器
app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/arti ...
- 使用go写一个简单的exe文件
工作需要一个小工具给分析师用,原先打算写一个脚本的,但是呢我又不会用python,要写的话只能用java来实现(打包成可执行jar,使用java -jar 的命令来执行,当然得安装jdk).这种命令行 ...
随机推荐
- 用正确的姿势使用 celery
简介 celery 是一个简单.灵活.可靠的分布式系统,可以处理大量的消息. celery 是一个任务队列,关注实时处理,同时支持任务调度. 它的工作机制是这样的: 快速使用 安装:pip3 inst ...
- yarn和npm的对比,以及项目中使用方式
相比npm 的优点 1.npm安装是串行,而yarn是并行,速度大大提升 2.已经下载过的包会被缓存,无需重复下载,更关键的是,支持离线安装 3.精准的版本控制,加上验证每个包的完整性,保证每次安装的 ...
- selenuim自动化爬取汽车在线谷米爱车网车辆GPS数据爬虫
#为了实时获取车辆信息,以及为了后面进行行使轨迹绘图,写了一个基于selelnium的爬虫爬取了车辆gps数据. #在这里发现selenium可以很好的实现网页解析和处理js处理 #导包 import ...
- 【BIEE】使用BIPublisher做报表时,选择多个参数使用IN的问题
在使用BIPublisher做报表的时候,报表出现xml数据加载错误的情况 环境描述 仪表盘提示是表示变量,并且支持多选 报表使用xdo方式制作的,直接使用JDBC直连数据库获取数据 数据集中的SQL ...
- html 选择本地图片,显示选择的图片
主要用的是html5的文件系统部分: <html> <head> <meta name="viewport" content="width= ...
- ASP.NET,C#后台调用前台javascript的五种方法
C#后台调用前台javascript的五种方法 由于项目需要,用到其他项目组用VC开发的组件,在web后台代码无法访问这个组件,所以只好通过后台调用前台的javascript,从而操作这个组件.在网上 ...
- Oracle数据库备份、灾备的23个常见问题
为了最大限度保障数据的安全性,同时能在不可预计灾难的情况下保证数据的快速恢复,需要根据数据的类型和重要程度制定相应的备份和恢复方案.在这个过程中,DBA的职责就是要保证数据库(其它数据由其它岗位负责) ...
- UDP用于保持大量终端的在线与控制,应用与业务则通过TCP去实现。这个和FTP服务控制与数据分离,采取不同的连接,有异曲同工之处 端口映射老化时间
移动端IM/推送系统的协议选型:UDP还是TCP? http://www.52im.net/thread-33-1-1.html
- fluid.io.load_inference_model 载入多个模型的时候会报错 -- [paddlepaddle]
将多个模型部署到同一个服务时,会出现stack错误. 原因是program为全局. 改成这样,可以解决. solved by myself. for those who need it:use a n ...
- coroutine闲谈
coroutine居然能被吹到这种地步