refs:
- iText in Action
Overview
Different parts of PDF file:
- header
- body
- cross-reference table
- trailer
Also, the Carousel Object System.
PDFs inside-out
from a de facto to an ISO standard.
why and how?
1985年,Adobe 引入了 PostScript Page Description Language。同年,Adobe 也开发了 Adobe Illustrator。这两款产品引发了桌面 publishing 的革命。但 Adobe 的创建者们感觉还缺少了点什么。
1991年,John Warnock 写了 Carmelot Paper,在其中写道:
一个特别的问题是,大多数程序可以打印至不同的打印机,但没有一种通用的方式来通信和查看这些打印信息。行业所亟需的是在不同的机器配置、OS、网络之间的通用通信机制。
作为这个文章的结果,一个新项目启动了,Carousel
是初始代号,之后修改为 Acrobat
。新文档格式原称为 IPS,很快就改为 PDF(Potable Document Format)。
The history of PDF
尽管 Carousel 只是最初代号,但现在仍用于表示PDF文件的组成方式。在最低层次,iText 使用继承自 PdfObject
的对象,在 Carousel 中,有一系列基础的 PDF 对象。
Basic PDF Objects
共有 8 种(ISO-32000-1)。
- Boolean
- Numeric
- String
- Name
- Array
- Dictionary
- Stream: like a string object, a stream is a sequence of bytes, mainly used for large amounts of data
- Null
示例:
- PdfAction, PdfFormField, PdfOutline: 是 PdfDictionary 的子类
- PdfRectangle 是 PdfArray 的特殊类型
- PdfDate 是 PdfString 的子类
这些类型称为 direct
。
The PDF file structure
通过文本编辑器打开一个 pdf 文件,可以看到 pdf 文件包含以下部分:
- header: version、comment
- body:seq of indirect objects: page、outline、annotation
- cross-reference:
- trailer: loc of the cross ref table and …