PDF 版本解析:1.4、1.7、2.0、PDF/A
PDF 在头部携带一个版本号 — 例如 %PDF-1.7或 %PDF-2.0。版本说明文件允许使用哪些特性。大多数阅读器会静默接受为比自己支持的更旧版本所写的文件。问题出在文件使用了阅读器不知道的更新特性时。本页列出每个版本、它添加了什么,以及你何时应该关心。
背景
PDF 为什么有版本
PDF 规范已经发展了 30 多年。每次修订都添加了特性(加密、压缩、透明度、富媒体)而不破坏现有文件。支持 PDF 1.7 的阅读器可以打开 1.4 文件,但 1.4 阅读器可能无法理解 1.7 文件。头中的版本是一种契约:文件承诺只使用到该版本为止的特性。
在实践中,现代查看器(Chrome、Firefox、Safari、Adobe Acrobat、macOS Preview、pdf-lib、PDF.js)都至少支持 PDF 1.7,这是事实上的基线。PDF 2.0 正逐步被采用,但现实中的大多数文件仍然是 1.4–1.7。
主线
PDF 1.4 到 2.0
PDF 1.4(2001)
添加了透明度(/ExtGState 图形状态)、JPEG2000 图像支持,以及用于无障碍的标签 PDF。这是许多旧印刷工作流的基线,至今仍被旧导出器广泛生成。
PDF 1.5(2003)
添加了对象流和交叉引用流 — 让现代 PDF 比其 1.4 等价物小得多的结构性压缩。还添加了 AES-128 加密(相对旧 RC4 的重大安全升级)以及对象流中的 JPEG2000。如果你压缩一个 PDF 而体积骤降,很可能是把 1.4 文件以带对象流的 1.5 重新保存。
PDF 1.6(2004)
添加了 AES-256 加密(安全 PDF 的现代默认值)、改进的交互表单(XFA)以及更丰富的注释支持。你今天遇到的大多数加密 PDF 是带 AES-256 的 1.6 或 1.7。
PDF 1.7(2006,ISO 32000-1:2008)
由 ISO 标准化的第一个版本。PDF 1.7 是实际基线:每个现代阅读器都支持它,大多数文件都写在这一层。它澄清了 3D 艺术、嵌入文件和富媒体,但现实中的大多数 1.7 文件只使用 1.5 特性集外加少量附加。
PDF 2.0(2017,ISO 32000-2:2020)
在 ISO 管理而非 Adobe 独自下开发的第一个版本。它移除了已弃用特性(RC4 加密、一些遗留名称树构造,XFA 表单架构被弃用),并添加了对真实世界健壮性的要求:更严格的解析、改进的加密,以及对透明度和颜色的更好支持。PDF 2.0 文件仍不常见,因为许多写入器为了兼容性默认使用 1.7。
子集
PDF/* 标准
在主线版本之上,若干 ISO 子集将 PDF 限制到特定用例。符合某子集的文件仍然是 PDF,但带有额外规则。
PDF/A — 归档
ISO 19005,第 1–4 部分。PDF/A 禁止破坏长期可复现性的特性:无加密、无外部引用、无 JavaScript,字体必须嵌入,颜色必须与设备无关。用于文件必须在几十年后仍能相同渲染的法院、政府和档案馆。
PDF/X — 印刷生产
ISO 15930。PDF/X 要求所有字体嵌入、颜色在印刷色空间(CMYK 或具名 ICC 配置文件)中,并定义出血和裁切框。用于商业印刷厂。把非 PDF/X 文件发给印刷厂常被退回。
PDF/UA — 无障碍
ISO 14289。PDF/UA 要求带真实阅读顺序的标签 PDF、每个有意义图像上的替代文本、文档语言以及正确的标题层级。WCAG / Section 508 合规所必需。完整要求请参阅我们的PDF/UA 解析。
PDF/E — 工程
ISO 24517。PDF/E 支持嵌入 3D 模型和工程标记。小众但仍在维护。
PDF/VT — 可变与交易印刷
ISO 16612。PDF/VT 为可变数据印刷扩展 PDF/X — 发票、对账单、直邮等每份都不同的印刷。针对高速数字印刷机优化。
实践
你的文件应该用哪个版本?
- 通用分享: PDF 1.7。最大兼容性,无缺点。
- 归档: PDF/A-2 或 PDF/A-3。档案会比制作它的软件活得更久。
- 商业印刷: PDF/X-4(基于 PDF 1.6)或 PDF/X-1a(更旧,PDF 1.3)。问你的印刷厂偏好哪个。
- 无障碍: PDF/UA。许多司法管辖区对政府和教育必需。
- 加密: PDF 1.7 with AES-256。避免 RC4(PDF 1.4 及更早)— 它在密码学上已被攻破。
你通常不会手动选择版本 — 你的导出工具会选。Word、Excel、PowerPoint、InDesign 和 Acrobat 都把它作为"另存为 PDF"选项或预设公开。正确的做法是知道哪个预设匹配你的目标(印刷、归档、Web)并使用它。
检查
如何判断文件是哪个版本
在文本编辑器中打开文件并看第一行。它会读到 %PDF-1.7 之类。那是头部声明的版本。对于 PDF/* 一致性级别,你需要一个能读取 OutputIntents 和 MarkInfo 字典的工具 — Adobe Acrobat Pro 的 Preflight 是标准;免费替代包括用于 PDF/A 和 PDF/UA 验证的 verapdf。
头中的版本是下界:标记为 %PDF-1.4 的文件可被任何支持 1.4 或更高版本的程序读取。标记为 %PDF-2.0 的文件可能无法被旧工具读取。拿不准时,存为 1.7。
继续阅读