PDF 完整指南:历史、功能、安全性及更多
· 12分钟阅读
便携式文档格式——通常称为 PDF——是有史以来最重要的文件格式之一。每天,全球有数十亿份 PDF 被共享:合同签署、发票处理、研究论文发表、政府表格提交和书籍阅读。然而,大多数人对这种格式如此强大、多功能和持久的原因知之甚少。
本综合指南涵盖了您需要了解的关于 PDF 的一切,从 1990 年代初的起源到现代功能,包括数字签名、交互式表单、长期归档、无障碍功能和高级安全性。无论您是普通用户还是文档管理专业人员,深入了解 PDF 都将帮助您更有效地使用它。
PDF 的历史
PDF 的故事始于 1991 年,当时 Adobe Systems 联合创始人 John Warnock 启动了"Camelot 项目"。Warnock 的愿景看似简单却具有革命性:创建一种通用文件格式,可以从任何应用程序捕获文档,以电子方式发送,并在任何机器上查看和打印——具有完美的视觉保真度。当时,在不同计算机之间共享文档是一场噩梦。在 Macintosh 上创建的文档在 Windows PC 上打开时看起来完全不同,打印结果同样不可预测。
Adobe 于 1993 年 6 月发布了 PDF 的第一个版本(1.0),同时发布了 Adobe Acrobat,这是第一个能够创建和查看 PDF 文件的应用程序。最初的反响平平。Acrobat 价格昂贵,免费的 Reader 软件对于当时的硬件来说过于庞大,而互联网——后来成为 PDF 的主要分发渠道——仍处于起步阶段。许多批评者认为这种格式是不必要的。
转折点出现在 1994 年,当时 Adobe 将 Acrobat Reader 作为免费下载提供。结合万维网的爆炸式增长,这一决定将 PDF 从小众格式转变为全球标准。美国国税局开始接受 PDF 格式的税表,政府机构将其用于官方出版物,企业将其用于合同和报告。
在接下来的几十年里,PDF 经历了多个版本的演变,每个版本都增加了重要功能。PDF 1.3(2000)引入了数字签名和 JavaScript 支持。PDF 1.4(2001)带来了透明度和无障碍功能。PDF 1.5(2003)增加了对多媒体内容的支持。PDF 1.7(2006)包含了 3D 内容和改进的表单处理。
在一项具有里程碑意义的举措中,Adobe 于 2007 年向国际标准化组织(ISO)提交了 PDF 规范。2008 年,PDF 成为 ISO 32000-1,这是一个不再由任何单一公司控制的开放国际标准。这确保了 PDF 的长久性,并鼓励整个软件行业的创新。最新版本 PDF 2.0(ISO 32000-2)于 2017 年发布并在 2020 年进行了完善,带来了现代加密算法、改进的无障碍标记以及对数字出版工作流程的更好支持。
PDF 的内部工作原理
了解 PDF 的内部结构揭示了为什么这种格式如此可靠和多功能。从本质上讲,PDF 文件是一种结构化的二进制格式,由四个主要部分组成:头部、包含对象的主体、交叉引用表和尾部。
头部将文件标识为 PDF 并指定版本号。像 %PDF-1.7 这样的简单文本行告诉阅读应用程序期望哪些功能。主体包含所有实际内容——文本、图像、字体、注释等——存储为编号对象。每个对象都有一个唯一标识符,可以引用其他对象,创建一个相互连接的内容网络。
交叉引用表(xref 表)使 PDF 快速。查看器无需读取整个文件来查找特定页面,而是可以使用存储在 xref 表中的字节偏移量直接跳转到任何对象。这就是为什么 500 页的 PDF 打开速度与 5 页文档一样快——查看器只加载当前视图所需的内容。
PDF 使用源自 PostScript 的页面描述语言,但有重要区别。虽然 PostScript 是一种完整的编程语言(图灵完备),但 PDF 的内容流故意限制为一组图形操作符。这使得 PDF 可预测且渲染安全——PDF 不会进入无限循环或在不同查看器上表现不同,这与 PostScript 程序不同。
PDF 中的文本存储为使用变换矩阵精确定位在页面上的字符代码序列。这种方法意味着文本以完全相同的位置、完全相同的大小和间距出现,无论查看应用程序如何。字体可以直接嵌入文件中(完整或作为子集),确保即使是不寻常的字体也能在任何设备上正确渲染。
图像存储为压缩像素数据流,支持多种压缩算法,包括 JPEG、JPEG2000、CCITT(针对黑白扫描优化)和 Flate(基于 ZIP 的无损压缩)。矢量图形使用 PDF 的原生绘图操作符,以数学方式描述形状而不是像素——在任何缩放级别都保持清晰。
PDF/A:归档标准
50 年后您的数字文档会怎样?打开它们的软件还会存在吗?字体会正确渲染吗?链接的内容仍然可用吗?这些问题推动了 PDF/A 的创建,这是一个 ISO 标准化的 PDF 子集,专门为长期数字保存而设计。
PDF/A("A"代表"归档")于 2005 年作为 ISO 19005-1 发布,实施了严格的规则,确保文档无限期地保持自包含和可重现。核心原则很简单:渲染文档所需的一切都必须包含在文件本身中,没有外部依赖。
PDF/A 规定了几个关键要求。所有字体必须完全嵌入——不引用未来计算机上可能不存在的系统字体。在大多数符合性级别中禁止音频和视频内容,因为媒体编解码器可能会过时。禁止 JavaScript 和可执行内容,消除安全风险和渲染不可预测性。不允许外部内容引用(如来自 URL 的链接图像)。颜色空间必须与设备无关(使用 ICC 配置文件),确保颜色无论显示技术如何都保持一致。需要 XMP 元数据以进行适当的编目和发现。
该标准已经通过几个符合性级别发展。PDF/A-1(基于 PDF 1.4)有两个子级别:PDF/A-1a 需要完整的无障碍标记,而 PDF/A-1b 只需要视觉再现。PDF/A-2(基于 PDF 1.7)增加了对 JPEG2000 压缩、透明度和图层的支持。PDF/A-3 通过允许任意文件附件扩展了 PDF/A-2——实现了诸如在渲染的 PDF 旁边嵌入原始源数据(如电子表格)等用例。PDF/A-4(2020)基于 PDF 2.0,进一步现代化了标准。
PDF/A 现在是全球政府机构、法院、图书馆和档案馆要求或推荐的。欧盟要求许多官方文件使用 PDF/A。美国国家档案馆和国会图书馆接受 PDF/A 作为首选保存格式。如果您需要 100 年后仍可读的文档,PDF/A 就是答案。
交互式 PDF 表单
PDF 表单将静态文档转变为交互式数据收集工具。用户无需打印表单、手工填写并扫描回来,而是可以直接在指定字段中输入、从下拉列表中选择、勾选复选框并以电子方式提交数据。
PDF 支持两种不同的表单技术。AcroForms(也称为经典 PDF 表单)自 PDF 1.2 版本以来一直是 PDF 规范的一部分。它们支持文本字段、复选框、单选按钮、下拉列表、签名字段和操作按钮。AcroForms 在几乎所有 PDF 查看器中都得到广泛支持,仍然是通用表单最兼容的选择。
XFA 表单(XML 表单架构)是后来引入的,提供更复杂的功能,包括动态布局、富文本格式和复杂的验证逻辑。然而,XFA 在 PDF 2.0 中已被弃用,除了 Adobe Acrobat 之外,许多现代 PDF 查看器都不支持。对于新的表单开发,建议使用 AcroForms。
现代 PDF 表单可以包括计算字段(自动求和值)、条件可见性(根据先前答案显示字段)、输入验证(确保电子邮件地址遵循正确格式),甚至条形码生成以进行自动处理。结合 JavaScript,PDF 表单可以提供丰富的交互体验,同时保持 PDF 闻名的视觉精度。
对于处理大量表单的组织,PDF 的表单数据可以导出为 FDF(表单数据格式)或 XFDF(XML 表单数据格式)文件,实现高效提取和数据库集成,而无需解析整个 PDF 文档。使用我们的 PDF 编辑器直接在浏览器中处理表单字段。
PDF 中的数字签名
PDF 中的数字签名远远超出了手写签名的简单图像。它们提供三个关键属性的加密证明:身份验证(验证谁签署了文档)、完整性(确认文档自签署以来未被修改)和不可否认性(防止签署者否认他们签署了)。
PDF 数字签名使用公钥基础设施(PKI)。当您签署 PDF 时,软件会创建文档内容的哈希(数字指纹),使用您的私钥加密该哈希,并将加密的哈希与您的数字证书一起嵌入 PDF 中。当有人打开签名的 PDF 时,他们的查看器使用您的公钥(来自证书)解密哈希,计算文档的新哈希,并比较两者。如果它们匹配,则签名有效且文档未被修改。
PDF 规范支持多种签名类型。批准签名表示同意文档内容——就像签署合同一样。认证签名(也称为作者签名)由文档创建者应用,可以指定签署后允许哪些更改——例如,允许填写表单但禁止编辑内容。时间戳使用可信的时间戳机构(TSA)提供文档在特定时间存在的证明。
PDF 2.0 通过现代加密算法增强了签名支持,包括 SHA-256、SHA-384 和 SHA-512 哈希函数,以及 ECDSA(椭圆曲线数字签名算法)和传统的 RSA。长期验证(LTV)通过在 PDF 本身中嵌入所有必要的验证数据(证书链、撤销信息和时间戳),确保签名即使在证书过期后仍然可验证。
PDF 数字签名的法律认可已经确立。美国 ESIGN 法案(2000)、欧盟 eIDAS 法规(2014)以及 60 多个国家的同等立法承认正确执行的数字签名具有法律约束力。许多行业——金融、医疗保健、房地产和政府——现在要求或更喜欢数字签名而不是湿墨签名,因为它们具有更高的安全性和可审计性。
PDF 无障碍访问
无障碍的 PDF 可以被所有人阅读和导航,包括使用屏幕阅读器、放大软件或替代输入设备的人。全球有超过 10 亿人患有某种形式的残疾,无障碍文档不仅仅是锦上添花——在许多情况下它们是法律要求,也是基本