PDF reference 1.0-1.7 下载(免费)以及PDF结构介绍

PDF reference 1.0-1.7 下载在文章末尾。

Creating PDF(两种间接方式):

1、该应用程序通过调用应用程序编程接口(API)来描述其可打印输出,如Microsoft®Windows®中的GDI或Apple Mac OS中的QuickDraw。一个名为打印机驱动程序的软件组件截获这些调用并解释它们以生成PDF格式的输出。

2、该应用程序直接以某些其他文件格式生成可打印输出,如PostScript、PCL、HPGL或DVI,通过单独的翻译程序将其转换为PDF。

PDF and the PostScript Language:

为了简化内容流的处理,PDF不包括常见的编程语言特性,如过程、变量和控件构造。

语法:

PDF语法分为四个部分:

Objects:

PDF文档是由一组基本类型的数据对象组成的数据结构。第3.1节“词汇惯例”描述了用于书写对象和其他语法元素的字符集。第3.2节“对象”描述了对象的语法和基本属性。第3.2.7节“流对象”提供了最复杂数据类型流对象的完整细节。

File structure:

PDF文件结构决定了对象在PDF文件中的存储方式、访问方式以及更新方式。该结构独立于对象的语义。第3.4节“文件结构”描述了文件结构。第3.5节“加密”文件级机制保护文档内容免受未经授权访问的机制 。

Document structure:

PDF文档结构指定了如何使用基本对象类型来表示PDF文档的组件:页面、字体、注释等。第3.6节“文件结构”描述了整个文件结构;

Content streams:

PDF内容流包含一系列指令涂写一页或其他图形实体的外观。这些指令虽然也表示为对象,但在概念上与表示文档结构的对象是不同的,并且是单独描述的。3.7节“内容流和资源”讨论了PDF内容流及其作为关联的资源。

PDF支持8种基本类型对象:

文件行,文件尾:

每一行由行尾(EOL)标记结束,该标记可以是回车符(字符代码13)、换行符

(字符码10),或者两者都有。

如果文件的行尾标记是单个字符(回车符或换行符),则在其前面加一个空格;如果标记是2个字符(回车符和换行符),则其前面不带空格。因此,条目的总长度总是恰好为20字节。

PDF文件结构:

PDF文件应由以下四个元素构成

一个单行标题,标识文件符合的PDF规范版本•

一个包含文件中包含的组成文件的对象的正文•

一个交叉引用表,包含文件中间接对象的信息•

一个尾部,给出交叉引用表和文件正文中特定特定对象的位置

File Header

PDF文件的第一行应是一个由5个字符%PDF组成的标题,后跟格式为1.N的版本号,其中N是0到7之间的数字。

符合早期版本PDF的文件也符合版本1.7,因此处理PDF 1.7的应用程序也可以接受具有以下任何标题的文件:

%PDF−1. 0

%PDF−1. 1

%PDF−1. 2

%PDF−1. 3

%PDF−1. 4

%PDF−1. 5

%PDF−1. 6

从PDF 1.4开始,应使用文件目录字典中的版本条目(通过文件尾部的根条目,如7.5.5“文件尾部”所述),而不是标题中指定的版本。

File Body:

PDF文件的主体由表示文档内容的一系列间接对象组成。对象是第7.3节“对象”中描述的基本类型,表示文档的组件,如字体、页面和采样图像。从PDF 1.5开始,正文还可以包含对象流,每个对象流包含一系列间接对象;

Cross-Reference Table:

交叉引用表是PDF文件中唯一具有固定格式的部分,它允许随机访问表中的条目。每个交叉引用部分应以包含关键字xref的行开始。该行后面应为一个或多个交叉引用小节,可按任何顺序出现。对于从未增量更新的文件,交叉引用部分应仅包含一个子部分,其对象编号从0开始。

该表包括一个或多个交叉引用部分。每个条目正好有20个字节长,包括行尾标记。有两种交叉引用条目:一种用于正在使用的对象,另一种用于已删除的对象。这两种类型的条目都有相似的基本格式,通过关键字n(表示正在使用的条目)或f(表示免费条目)来区分。使用中条目的格式为nnnnnnnn ggggg n eol,其中nnnnnnn是一个10位字节偏移量ggggg是一个5位生成编号n是一种文字关键字,用于标识使用中条目eol是一个2字符的行尾序列。

解码流中的字节偏移量应为10位数字,必要时用前导零填充,给出从文件开始到对象开始的字节数。应使用一个空格将其与代号隔开。生成号应为5位数字,必要时还应填充前导零。生成号后面应为单个空格、关键字n和由以下内容之一组成的2字符行尾序列:SP CR、SP LF或CR LF。因此,条目的总长度应始终为20字节

条目可以通过两种方式成为自由条目列表的成员。使用基本机制,交叉引用表中的自由条目可以形成一个链表,每个自由条目包含下一个的对象编号。表中的第一个条目(对象编号0)应始终是自由的,并且应具有65535的生成号;它应该是自由对象链接列表的头部。最后一个自由条目(链表的尾部)链接回对象号0。使用第二种机制,该表可能包含其他自由条目,这些自由条目链接回对象编号0,生成号为65535,即使这些条目不在链表本身中。

交叉引用表须包含从0到文件中使用的最大对象编号的每个对象编号的一个条目,即使该范围内的一个或多个对象编号实际上未出现在文件中。

下面显示了一个交叉引用部分,它由一个包含六个条目的子部分组成:四个正在使用(对象编号1、2、4和5),两个空闲(对象编号0和3)。对象编号3已被删除,使用该对象编号创建的下一个对象的代号为7。

File Trailer:

PDF文件的尾部使读取该文件的应用程序能够快速找到交叉引用表和某些特殊对象。文件的最后一行只包含文件结束标记%%EOF。startxref行前面是尾部字典,由关键字尾部和括在双尖括号中的一系列键-值对组成(<<…>>)。因此,预告片的整体结构如下:

Incremental update:

增量更新PDF文件时,应将更改附加到文件末尾,保持其原始内容不变。增量更新的交叉引用部分应仅包含已更改、替换或删除的对象的条目。删除的对象在文件中应保持不变,但应通过其交叉引用条目标记为已删除。添加的部分应包含除前一个部分的前一个条目(如果存在)之外的所有条目,无论是否修改。此外,添加的尾部字典应包含一个Prev条目,给出前一个交叉引用部分的位置(见Ta b l e 15)。每个拖车应以其自己的文件结尾(%%EOF)标记终止。 更新的交叉引用部分应包括对象新副本的字节偏移量,覆盖原始交叉引用部分中包含的旧字节偏移量。

PDF document:

Adobe提供了PDF Service API:

能够以编程方式更改文档,例如重新排序、插入和旋转页面,以及压缩文件等。

Adobe PDF Services API Free Trial :

支持java、python、.Net、以及Node.js编程语言,前6个月可以免费试用,之后的费用没有明确给出。费用具体位置在文件Adobe-Developer-Additional-Terms 的第7页末尾。

adobe中国官方网站:

https://www.adobe.com/cn/

PDF文件解析博客:

PDF文件解析_程序员青菜的博客-CSDN博客_pdf解析

PDF 1.7 文件结构博文链接:(可以自己用记事本打开一个PDF文件,再对照该博文对PDF文件结构进行理解)

pdf reference官方指南之-语法基础和文件结构_子燕若水的博客-CSDN博客_pdf语法

PDF 1.7 文件结构博文链接:(需要csdn会员)

PDF2.0标准PDF2.0specificationPDF2.0refe6-专业指导文档类资源-CSDN下载

Adobe地址:

Acrobat Developer Resources — Acrobat Developer Docs

PDF reference 1.0 - 1.7 以及 Adobe-Developer-Additional-Terms下载,我上传的资源(貌似需要会员):

https://download.csdn.net/download/qq_46664080/86933043?spm=1001.2014.3001.5503

PDF reference下载地址(官方):

https://opensource.adobe.com/dc-acrobat-sdk-docs/pdflsdk/

PDF reference 官方下载处的截图:

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值