什么是 PDF?格式基础解析
PDF 是 Portable Document Format(便携文档格式)的缩写。它是共享需要在每台设备上看起来都相同的文档时最广泛使用的格式。本页解释 PDF 实际是什么、它从何而来,以及内部如何工作。
历史
PDF 的由来
PDF 由 Adobe Systems 于 1993 年发明。目标简单却雄心勃勃:一种单一文件格式,无论用哪台计算机、操作系统或打印机查看,都能完全按作者意图保留文档的字体、图像、图形和布局。"Portable Document Format"这一名称正反映了这种雄心。
在最初的十年里,PDF 是 Adobe 的专有格式。2008 年它作为开放国际标准 ISO 32000-1 发布,管理权移交给国际标准化组织(ISO)。如今任何人都可以构建读写 PDF 的软件而无需支付版税。修订版 ISO 32000-2(PDF 2.0) 于 2020 年发布,在不破坏现有文件的前提下澄清了许多边界情况。
普及
PDF 为何成为通用标准
PDF 解决了早期格式无法解决的真实问题。在另一台计算机上打开的 Word 文档可能会重排、替换字体并改变分页。网页则依赖于浏览器和屏幕尺寸。相比之下,PDF 是固定布局文档:第 3 页在任何地方都是第 3 页的样子。
这种可靠性使 PDF 成为合同、发票、研究论文、政府表格、电子书以及任何用于打印或归档的文档的默认选择。免费的阅读器(Adobe Acrobat Reader,以及后来的浏览器和操作系统)让查看变得无摩擦。如今,每个主流操作系统都能在不安装额外软件的情况下打开 PDF。
内部结构
PDF 文件里有什么
PDF 是由四部分组成的结构化文本与二进制文件:
- 头 — 声明 PDF 版本的单行(例如
%PDF-1.7)。 - 体 — 一系列编号对象,描述页面、字体、图像、文本流和元数据。每个对象独立,可按任意顺序读取。
- 交叉引用表 — 给出每个对象字节偏移的索引,使阅读器无需扫描整个文件就能直接跳到任意对象。
- 尾 — 指向交叉引用表和根对象(文档目录),让阅读器知道从哪里开始。
这种设计正是 PDF 可以很大却仍能快速打开的原因:交叉引用表让阅读器只取所需的对象。这也解释了为何增量更新可行 — 编辑 PDF 时,可以追加新对象和新的交叉引用段,而无需重写整个文件。
版本
PDF 版本简述
头中的版本号(%PDF-1.x 或 %PDF-2.0)告诉阅读器文件可能使用哪些特性。现实中的大多数 PDF 是 1.4 到 1.7。版本 1.5 引入了对象流和交叉引用流以减小文件体积。1.6 增加了 3D 内容和更丰富的加密。1.7(ISO 32000-1 的基础)整合了一切。PDF 2.0 清理了规范,但在实践中仍不常见。
日常使用中,版本很少重要。现代阅读器都能处理。更重要的是对象内部的内容:嵌入字体、图像压缩和元数据。
继续阅读