数字时代彻底改变了文档的创建、存储和分发方式,但也带来了一个根本性的挑战:如何确保电子文档在长达数十年甚至数百年的漫长岁月中,依然保持可访问、可读和视觉上的准确性。传统的存档方法,例如纸张、缩微胶片和缩微胶片,虽然可以保存更长时间,但缺乏数字格式固有的优势,例如高效的搜索能力、紧凑的存储和快速的电子传输。
这是一篇有关 PDF/A(用于文档存储的最新数字文件格式)的科普文章,在末尾我们还推荐了将PDF转为PDF/A以及创建PDF/A文件的apps和SDK。
1. 文档保存的历史
技术变革的无情步伐对数字信息构成了重大威胁。硬件会过时,软件版本会更新换代,文件格式也会逐渐被废弃,这可能导致存储的文档无法访问或外观改变。早期的数字归档尝试通常依赖于标记图像文件格式 (TIFF) 等格式。虽然 TIFF 提供了一定程度的标准化并确保了图像的长期可复制性,但它也存在明显的局限性,尤其是对于包含文本和矢量图形的文档而言。TIFF 文件通常基于光栅(将图像存储为像素),这意味着如果没有光学字符识别 (OCR) 处理,文本本身就无法被搜索,而且与结构化程度更高的格式相比,TIFF 的文件大小通常要大得多。此外,TIFF 缺乏对嵌入式元数据或复杂文档结构的强大支持。
Adobe Systems 推出的可移植文档格式 (PDF) 在 TIFF 的基础上进行了重大改进,不仅支持光栅图像,还支持文本和矢量图形等结构化对象,能够高效压缩,嵌入元数据,并具有设备独立性。然而,标准 PDF 规范经历了多个版本的演变,其新增功能虽然增强了灵活性和功能性,但却被证明不适合可靠的长期保存。诸如链接外部字体、嵌入多媒体内容、使用 JavaScript 或加密等功能可能会损害文档未来的可查看性或视觉完整性。
国际社会认识到需要一种稳定可靠的电子归档格式,既能充分利用 PDF 的优势,又能弥补其归档方面的不足,因此携手合作,共同开发了 PDF/A。PDF/A 由国际标准化组织 (ISO) 正式发布,名为 ISO 19005,它定义了一种受限版本的 PDF,专为电子文档的长期保存而设计。该标准的开发源于各行各业的需求,包括政府机构、图书馆、档案馆以及需要确保记录在未来长期可用且真实的行业。
本文全面探讨了 PDF/A 标准,详细介绍了其定义、核心原则和技术特性。本文探讨了 PDF/A 的不同版本和一致性级别,概述了它们的具体功能和应用。此外,本文还重点介绍了该标准在各个行业的优势和主要用例,并提供了选择和使用各种工具(桌面软件、在线服务和开发人员库)将现有 PDF 文档转换为 PDF/A 格式的实用指南。
2. 解码 PDF/A:档案标准解析
定义和核心目的
PDF/A 由 ISO 19005 标准系列正式定义为一种基于 PDF 的文件格式,它“提供一种机制,使电子文档能够随着时间的推移保留其视觉外观,且不受用于创建、存储或渲染文件的工具和系统的影响”。至关重要的是,PDF/A 为电子文档指定了一个技术配置文件,以确保其长期可复制性;它本身并未定义归档策略、方法或保存目的。该标准的主要目标是确保文档的静态视觉外观在其创建数十年甚至数百年后仍能可靠且一致地再现。
基本特征
为了实现可靠且长期保存的目标,PDF/A 对 PDF 文件施加了特定的约束和要求,注重文件独立性和设备独立性。主要特性包括:
- 自包含:这或许是 PDF/A 最基本的原则。所有为了准确呈现文档所需的信息都必须嵌入文件本身。这包括:
- 字体:文档中使用的所有字体都必须嵌入。此外,这些字体必须合法嵌入,以实现不受限制的通用渲染。这可以避免在将来的查看系统中缺少所需字体时出现渲染问题。
- 颜色配置文件:必须以与设备无关的方式指定色彩空间,通常使用嵌入式 ICC 配置文件,以确保在不同设备和平台上实现一致的色彩再现。
- 图像和内容:所有可见内容,包括图像、矢量图形和文本,都必须是文件的一部分。
- 禁止外部引用:文档不得依赖任何外部资源进行渲染。严禁引用外部字体程序、图像或其他内容。
2. 独立性: PDF/A 的目标是独立于用于查看或打印的特定软件应用程序、硬件平台或操作系统。这最大限度地提高了使用未来技术正确打开和查看文档的可能性。
3. 禁用功能:为确保稳定性和可预测性,PDF/A 明确禁止某些被认为不适合长期存档的 PDF 功能。这些功能包括:
- 加密
- JavaScript 和可执行文件启动
- 音频和视频内容
- 3D 艺术品(PDF/A-1、-2、-3 中禁止;PDF/A-4e 中允许)
- LZW 压缩(由于历史知识产权问题)
- 透明度和图层(可选内容组)(PDF/A-1 中禁止,PDF/A-2 及以上版本中允许)
- XML 表单架构 (XFA) 表单
4. 必备功能: PDF/A 要求采取某些措施来增强长期可用性:
- 基于标准的元数据:需要使用可扩展元数据平台 (XMP) 来嵌入元数据(例如作者、标题、关键词)。这有助于文档管理和发现。
- 数字签名:虽然不是强制性的,但 PDF/A 允许根据特定规则(例如,符合后续版本的 PAdES 标准)使用数字签名,以确保真实性和完整性。
PDF/A 与标准 PDF:为什么有限制?
PDF/A 所施加的限制并非随意而为,而是经过深思熟虑的选择,旨在解决标准 PDF 功能在长期存档环境中固有的风险。标准 PDF 优先考虑灵活性和功能,允许使用外部字体链接、加密和动态内容等元素。虽然这些功能对于一般文档交换很有用,但它们会引入依赖性和不确定性,这对于保证文档的保存是不可接受的。
例如:
- 标准 PDF 可能依赖于用户系统上安装的字体。如果几十年后这些字体不可用,文档的外观就会发生变化,甚至可能变得无法阅读。PDF/A 强制要求嵌入字体,以消除这种依赖。
- 标准 PDF 可能会使用与设备相关的颜色空间,导致不同设备上的色彩渲染不一致。PDF/A 要求使用与设备无关的颜色定义,以实现可预测的视觉输出。
- 标准 PDF 中的动态内容(例如 JavaScript 或嵌入的多媒体)需要特定软件(播放器、解释器)才能运行。这些软件可能会过时或不可用,或者内容本身可能会改变文档的状态,从而损害档案完整性。PDF/A 禁止此类动态内容。
- 标准 PDF 中的加密虽然提供了安全性,但也带来了与密钥管理相关的长期访问挑战,以及加密算法可能过时的问题。PDF/A 不允许加密,其优先考虑的是未来的可访问性,而非文件格式本身的机密性。但仍然可以通过允许的数字签名来确保真实性。
因此,PDF/A 体现了一种经过深思熟虑的权衡:牺牲标准 PDF 的部分动态功能和灵活性,以最大程度地确保长期视觉保真度和可靠访问。它优先考虑保存的可预测性,而非功能的丰富性。
3. PDF/A 概览:版本和一致性级别
PDF/A 标准并非一成不变;它经历了 ISO 19005 框架下发布的多个版本(或部分)的演变。重要的是,后续版本通常会添加功能并与较新的 PDF 规范保持一致,但这并不会使符合早期版本的文件失效。即使在 PDF/A-2、-3 或 -4 发布后,符合 PDF/A-1 的文档仍然是有效的存档对象。
标准的演变
- PDF/A-1 (ISO 19005-1:2005):原始标准,基于 PDF 1.4 版。这是限制最严格的版本,禁止使用后续 PDF 版本中常见的功能,例如透明度、图层(可选内容组)、JPEG2000 压缩和文件附件。虽然它仍然受到广泛支持,有时甚至被强制执行,但它的局限性(尤其是缺乏透明度支持)可能会导致视觉效果发生变化,或阻止包含透明效果的现代文档的转换。
- PDF/A-2 (ISO 19005-2:2011):基于较新的 PDF 1.7 规范(定义见 ISO 32000-1)。PDF/A-2 显著扩展了允许的功能集,包括对透明度、图层、JPEG2000 和 JBIG2 图像压缩(有利于扫描文档)、OpenType 字体的支持,以及在 PDF/A 容器中嵌入其他符合 PDF/A 标准的文件的功能(有利于归档相关文档集)。它还正式支持基于 PAdES 标准的高级数字签名。与 PDF/A-1 相比,PDF/A-2 通常被认为是转换现代文档的更实用的选择。
- PDF/A-3 (ISO 19005-3:2012):同样基于 PDF 1.7,PDF/A-3 在允许的 PDF 功能方面与 PDF/A-2 几乎完全相同。关键区别在于,PDF/A-3 允许嵌入任意格式的文件(例如 XML、CSV、CAD 文件、文字处理文档、电子表格),而不仅仅是其他 PDF/A 文件。此功能支持“混合归档”(将原始源文档嵌入 PDF/A 表示形式)或事务性工作流等用例,其中机器可读数据(例如 ZUGFeRD 和 Factur-X 标准中的 XML 发票数据)与人类可读的 PDF 捆绑在一起。然而,这种灵活性带来了巨大的保存挑战,因为 PDF/A 标准本身无法保证嵌入的非 PDF/A 文件的长期可用性或保存。由于这些风险,档案机构通常对 PDF/A-3 持谨慎态度。
- PDF/A-4 (ISO 19005-4:2020):基于 PDF 2.0 (ISO 32000-2) 的最新版本。PDF/A-4 将档案标准与最新的 PDF 规范保持一致,原生支持 PDF 2.0 中引入的功能,例如较新的数字签名方法 (PAdES)。与 PDF/A-2 和 PDF/A-3 相比,它简化了一致性级别结构。PDF/A-4 引入了特定的一致性级别:PDF/A-4e(工程)取代了单独的 PDF/E 标准,并支持归档 3D 模型和注释;以及 PDF/A-4f,与 PDF/A-3 类似,允许嵌入任意文件格式。
这一进展反映了 PDF 格式在努力保持档案稳定性核心原则的同时,不断融入新的功能。PDF/A-3 和 PDF/A-4f 中引入任意文件嵌入功能,标志着 PDF/A 格式作为容器格式的重大转变,超越了 PDF/A-1 单纯的视觉保存重点,需要仔细考量嵌入内容的保存策略。
了解一致性级别
PDF/A-1、PDF/A-2 和 PDF/A-3 中,不同的一致性级别规定了文件符合标准的程度,定义了除基本视觉渲染之外的内容可访问性和语义相关要求。这些级别通常用字母 B、A 和 U 来表示。
- B 级(基础):此级别确保文档的视觉外观和可重复性始终如一。它保证文档在将来查看或打印时看起来始终如一。B 级代表 PDF/A 合规性的最低要求,也是最容易达到的级别。但是,它不保证文档文本可搜索、可按有意义的顺序提取,或可被辅助技术理解。B 级适用于 PDF/A-1、PDF/A-2 和 PDF/A-3。
- A 级(无障碍): A 级包含 B 级的所有要求,并增加了无障碍访问和结构语义方面的关键规定。它要求文档为“带标签的 PDF”,这意味着其逻辑结构(标题、段落、图片、表格、阅读顺序)必须使用层次化树形结构明确定义。它还要求可靠的 Unicode 文本映射,确保文本能够被准确提取、搜索和解释。这些要求使得残障人士能够通过屏幕阅读器等辅助技术访问 A 级文档,并促进内容的重复使用和重新利用。A 级适用于 PDF/A-1、PDF/A-2 和 PDF/A-3。
- U 级 (Unicode): U 级由 PDF/A-2 引入,介于 B 级和 A 级之间。它包含 B 级的所有要求,并增加了对文档中所有文本进行可靠 Unicode 字符映射的要求。这确保了文本能够被可靠地搜索和复制/粘贴。然而,与 A 级不同,U 级并不强制要求包含逻辑结构信息(标记)。这使得当文本的可搜索性和提取性至关重要,但无需或无法实现为无障碍内容进行全面标记所带来的复杂性或工作量时,U 级是一个不错的选择。U 级适用于 PDF/A-2 和 PDF/A-3。
PDF/A-4 简化了此结构。基础 PDF/A-4 级别要求 Unicode 映射(类似于 U 级),并鼓励(但不强制)添加标记(类似于 A 级)。此外,它还添加了专业级别 PDF/A-4e(工程级)和 PDF/A-4f(文件级)。
A 级和 U 级的存在凸显了数字存档领域日益增长的重视,不仅在于保留文档的视觉外观,更在于确保其内容保持机器可读、可搜索,并可供所有用户(包括依赖辅助技术的用户)访问。这符合普遍可访问性的广泛趋势,也符合以编程方式处理和重新利用文档内容日益增长的需求。
选择版本和级别的指南
选择适当的 PDF/A 版本和一致性级别取决于所存档文档的具体要求和预期的未来用途。
- 对于不需要辅助功能或嵌入功能的基本长期视觉保存,PDF/A-2b 或 PDF/A-3b 可能足够。PDF/A-1b 也是一种选择,但由于其局限性(尤其是在透明度方面),通常不建议用于新的转换。
- 如果可靠的文本搜索和复制至关重要,但无需完整的无障碍标记,则 PDF/A-2u 或 PDF/A-3u 是合适的选择。基础 PDF/A-4 级别也符合此需求。
- 当需要为残障用户提供可访问性,或者保留文档的逻辑结构以便重新利用内容非常重要时,级别 A(PDF/A-1a、PDF/A-2a、PDF/A-3a)是必要的。
- 如果需要嵌入其他 PDF/A 文件(例如,存档集合),则 PDF/A-2(任何级别)都是合适的。
- 如果需要嵌入非 PDF 文件(例如,源文档、XML 数据),则必须使用 PDF/A-3(任何级别)或 PDF/A-4f,但这需要关于嵌入文件的保存风险和处理的明确机构政策。
- 对于存档包含 3D 模型的工程文档,PDF/A-4e 是指定标准。
表 1:PDF/A 版本和一致性级别的比较
4. 价值主张:PDF/A 的优势和应用
采用 PDF/A 标准将为关注电子文档长期管理和保存的组织和个人带来显著优势。这些优势直接源于该标准的核心原则和技术要求。
核心优势
- 长期可靠性和可访问性:其主要优势在于,无论未来软件或硬件如何变化,都能确保文档在未来数十年内保持视觉一致性和可访问性。其平台独立性最大程度地降低了因技术过时导致文件无法使用的风险。
- 真实性和完整性: PDF/A 有助于确保文档的完整性,这意味着内容和外观自存档以来未经更改。当与该标准对嵌入式数字签名的支持相结合时,这一点尤为重要,因为数字签名可以提供可验证的来源证明并防止篡改。然而,需要注意的是,PDF/A 本身是一种文件格式规范,而非孤立的身份验证或安全系统。
- 可搜索性:与简单的图像存档(例如基本 TIFF)相比,PDF/A 的一个主要优势在于它能够保留可搜索的文本。对于数字文档,文本可直接保存。对于扫描文档,可以添加 OCR 文本层(通常为不可见层)。符合级别 A、U 和基本 PDF/A-4 进一步保证了可靠的 Unicode 映射,从而确保跨多种语言进行准确的全文搜索和提取。
- 元数据:强制使用标准化的 XMP 元数据,允许将文档的基本信息(作者、标题、创建日期、关键字等)直接嵌入到文件中。这有助于更好地管理文档、实现自动化处理、在档案库中进行检索,并了解文档随时间推移的背景和来源。
- 效率:与未压缩或压缩效率较低的 TIFF 格式相比,PDF/A 通常能够压缩文件,这得益于其标准中允许的有效压缩技术(LZW 除外)。这降低了存储成本并加快了电子传输速度。然而,由于需要嵌入字体等元素,PDF/A 文件有时会比标准 PDF 文件更大。
- 合规性: PDF/A 作为 ISO 标准,是众多行业中公认的可靠选择,能够满足长期电子记录保存的法律法规要求。许多政府机构和受监管行业都推荐或强制使用 PDF/A。
- 通用性: PDF/A 文件可以使用各种现成的、通常免费的 PDF 查看软件在不同的操作系统和设备上查看。这确保了广泛的可访问性,无需专门或专有的软件。
关键用例和领域
PDF/A 的优点使其适用于长期保存、真实性和可访问性至关重要的广泛应用:
- 政府和公共行政部门:各级机构都使用 PDF/A 格式归档关键记录,例如法律文件、法院文件、立法、法规、许可证、官方通知、土地契约、出生证明和历史档案。美国国家档案和记录管理局 (NARA) 和联邦法院等机构的指令强调了其在该领域的重要性。它为归档各种电子文档和扫描文档(包括电子邮件和官方信函)提供了统一的格式。
- 法律行业:律师事务所、法院和法务部门依赖 PDF/A 格式归档合同、案件档案、证据文件和法庭文件。PDF/A 格式能够确保文档完整性(尤其是数字签名)和长期可读性,这对于维护法律记录的可采性和真实性至关重要。
- 图书馆和档案馆:这些机构广泛使用 PDF/A 格式来数字化和保存其馆藏,包括历史手稿、书籍、期刊、地图、照片以及学术论文。它是易损实物资料的可靠数字替代品,也是缩微胶片等传统方法的替代者。
- 金融服务和保险:银行、保险公司和其他金融机构面临着严格的监管规定,要求保留报表、发票、保单和信用记录等记录,通常长达 50 年或更长时间。PDF/A 为归档这些关键文档提供了一致且合规的标准,确保它们可用于审计和监管审查。
- 医疗保健:医疗保健行业使用 PDF/A 格式长期存档敏感的患者记录、病史、诊断报告和实验室结果。这有助于确保符合美国 HIPAA 等法规中关于数据保留和隐私的规定,长期保持病史的准确性,并为记录提供法律确定性。PDF/A 的可搜索性对于高效访问患者信息也非常有价值。
- 工程与制造:航空航天、土木工程和制造等领域的组织使用 PDF/A 来归档技术图纸、规格和生产文档。PDF/A-2 支持图层和透明度,而 PDF/A-4e 则特别支持 3D 模型,使其越来越适用于复杂的工程设计。
- 学术界:大学和研究机构通常要求或推荐使用 PDF/A 格式提交和归档学位论文、学位论文和研究报告。这确保了文档的长期可访问性,并能正确呈现复杂内容,包括数学公式和各种语言的特殊字符。
- 一般业务:各个行业的公司都使用 PDF/A 来存档重要的公司记录,包括合同、发票、人力资源文件、内部政策和电子邮件通信,以确保合规性、保存公司记忆并促进审计。
PDF/A 在这些不同领域的广泛采用,很大程度上受到监管压力以及对合法、长期记录管理的需求的影响。PDF/A 作为国际标准,为满足这些关键的合规性和风险缓解需求提供了强大且可靠的解决方案。它不仅仅是一种技术选择,更是负责任的数字管理的战略组成部分。
尽管 PDF/A 具有明显的优势,尤其是相对于 TIFF 等纯图像格式而言,但将现有文档转换为 PDF/A 的过程并非没有潜在挑战。执行该标准的严格规则可能需要修改源文档,例如拼合透明度(如果处理不当,可能会改变外观,尤其是对于 PDF/A-1 而言)、在无法获取原始字体的情况下替换字体,或删除禁用内容。转换过程可能耗费大量资源,并且要获得有效、高保真的结果,尤其是对于复杂文档或更高合规级别(例如 A 级标记)而言,需要功能强大的工具和严格的验证。
5.转换工具包:创建 PDF/A 文档
实现 PDF/A 合规性通常需要直接以该格式创建文档,或将现有文件(通常是标准 PDF 或其他格式)转换为 PDF/A。市面上有多种工具可用于实现此目的,大致分为几类:桌面软件、在线服务以及面向开发人员的库和命令行实用程序。最佳选择在很大程度上取决于工作流程需求(数量、自动化程度)、技术专业知识、预算、安全需求以及源文档的性质等因素。
桌面软件解决方案
这些应用程序在用户的计算机上本地运行,与在线服务相比,它们提供更强大的控制力、更多功能、离线功能以及通常更高的安全性。它们适用于需要定期创建或转换 PDF/A 文件的个人专业人士、小型企业和组织。
- 商业选择:
- Adobe Acrobat Pro: Acrobat Pro 被广泛视为 PDF 处理的行业标准,它提供了全面的 PDF/A 工具。它允许用户将文件直接保存为 PDF/A(支持 PDF/A-1、PDF/A-2 等各种版本)。其强大的预检工具可以根据特定的 PDF/A 配置文件(例如 PDF/A-1b、PDF/A-2b)进行详细验证,并包含“修复程序”以自动纠正许多合规性问题。操作向导可帮助批量转换多个文件。Acrobat 还可以根据需要删除 PDF/A 信息。虽然功能丰富且可靠,但需要订阅。
- Foxit PDF Editor:一款提供类似功能的强劲竞争对手。Foxit 支持通过其虚拟打印机驱动程序、Microsoft Office 插件和“另存为”选项创建 PDF/A 文件。它包含一个预检工具,可用于根据各种 PDF/A 标准进行转换和验证。Foxit 提供订阅和永久许可证两种选择,购买方式灵活。
- Nitro PDF Pro:另一款备受好评的商业编辑器,以其 PDF 创建、编辑和转换功能而闻名,包括 PDF/A 支持。
- 其他商业工具: Wondershare PDFelement、Nuance PDF Converter Professional(现为 Kofax)和 PDF Suite 等应用程序也通常包含 PDF/A 创建或转换功能,但功能可能有所不同。
2. 免费/开源选项:
- LibreOffice:这款流行的免费开源办公套件内置了将文档(文本文档、电子表格、演示文稿)直接导出为 PDF/A 格式的功能。该选项位于 下
File > Export As > Export as PDF...
,用户可以勾选“存档(PDF/A,ISO 19005)”复选框,然后选择一个 PDF/A 版本(例如 PDF/A-1b、PDF/A-2b)。这非常适合从零开始创建兼容文档,但不适合转换复杂的现有 PDF 文件。 - PDF24 Creator:一款免费的(仅限 Windows)实用程序,提供一套 PDF 工具,包括创建、编辑和转换功能,据称支持 PDF/A。其易用性和功能集使其成为广受欢迎的免费选择。
- PDFsam Basic:这款免费开源工具擅长拆分、合并、旋转和混合 PDF 文件。虽然基础版不支持直接进行 PDF/A 格式转换,但其商业“增强版”是一款功能齐全的 PDF 编辑器,提供转换、编辑、OCR 和安全功能,甚至可能支持 PDF/A 格式。
在比较桌面软件时,关键标准包括支持的特定 PDF/A 版本和一致性级别、转换和验证引擎的准确性和可靠性、批处理功能、OCR 集成(用于扫描文档)、易用性、平台兼容性(Windows、macOS、Linux)和成本结构(免费、一次性购买、订阅)。
表 2:桌面 PDF/A 转换软件比较
在线转换服务
许多网站提供 PDF 转换服务,包括 PDF 转 PDF/A 格式。对于偶尔需要转换但又不想安装软件的用户来说,这些服务非常方便。
- 示例: Smallpdf、iLovePDF、SodaPDF、PDFCreator Online、Adobe Acrobat Online 和 Foxit Online 等服务提供了各种 PDF 操作工具。其中一些工具(例如 PDFCreator Online)明确列出了 PDF/A 转换选项(例如 PDF/A-1b、-2b、-3b)。其他一些工具可能将其作为常规 PDF 转换或创建流程的一部分提供。
- 功能与限制:该流程通常包括上传文件、选择目标格式(如果支持 PDF/A 格式)以及下载结果。然而,免费版通常会对文件大小、每日或每小时的转换次数或功能可用性施加严格的限制。与桌面软件相比,批处理和配置选项通常较少。PDF/A 转换和验证(如果提供)的可靠性可能存在不确定性。
- 隐私和安全:这是在线服务最令人担忧的问题。用户会将潜在的敏感文档上传到第三方服务器。因此,务必仔细审查服务方关于数据处理、文件存储期限以及所采用的安全措施(例如,上传/下载的 TLS 加密、AES-256 等服务器端加密)的隐私政策。信誉良好的服务方通常会声明文件会在短时间(例如几小时)后删除。此外,还需留意服务方是否拥有 ISO 27001 等合规认证或是否遵守 GDPR 等数据保护法规。用户信任和透明度至关重要。许多服务需要注册或付费订阅才能获得无限制使用或增强的安全性。
表 3:在线 PDF 到 PDF/A 转换器——考虑因素
对于开发人员:库和命令行实用程序
对于需要以编程方式将 PDF 转换为 PDF/A、进行大容量批处理或集成到自定义应用程序和工作流的场景,开发人员库和命令行工具是合适的选择。
- 编程库:
- iText(Java 和 .NET):一个成熟强大的库,广泛应用于企业环境。核心库(iText Core/Community)遵循 AGPL 许可证开源,在闭源应用程序中使用需要商业许可证。它提供了丰富的 PDF 创建、操作和检查功能,包括对生成和潜在转换为各种 PDF/A 标准(PDF/A-1、-2、-3、-4)和级别的强大支持。它还支持 PDF/UA、数字签名、表单填写/展平,并提供 HTML 到 PDF 转换、编辑、复杂脚本支持等附加组件。它拥有丰富的文档和示例。
- ComPDF:一个遵循 Apache 2.0 许可证的综合库。它支持高效的 PDF 转换功能,帮助企业轻松将 PDF 转换为 PDF/A,并构建更安全、更合规的文档管理工作流程。它可以分析现有 PDF 文件的内容并进行一系列修改,以生成符合 PDF/A 标准的文档。
<span style="background-color:#f9f9f9"><span style="color:#242424">CPDFDocument 文档 = CPDFDocument.InitWithFilePath( <span style="color:#c41a16">“文件路径”</span> ) ;
文档.WritePDFAToFilePath(CPDFType.CPDFTypePDFA1a,<span style="color:#c41a16">“保存路径”</span> ) ;</span></span>
- Apache PDFBox (Java):它为 PDF 创建、操作、文本提取和表单处理提供了可靠的功能。其
preflight
模块专为验证而设计,尤其是针对 PDF/A-1b,尽管它可以进行配置或扩展。然而,PDFBox 并未提供简单的高级函数来自动将任意 PDF 转换为 PDF/A。开发人员通常需要使用预检模块来识别合规性问题,然后以编程方式实现必要的修复(例如,嵌入字体、转换色彩空间),这可能非常复杂。一种常见的解决方法是将页面渲染为图像并创建新的 PDF/A 文档,但这会牺牲文本的可搜索性和结构。 - Apryse SDK(原名 PDFTron SDK)(Python、Java、.NET、C++ 等):一款功能全面的商业 SDK,提供跨多个平台的高质量 PDF 功能。它明确支持将各种文件格式(PDF、Office 文档、图像)转换为所有主要的 PDF/A 版本和一致性级别(PDF/A-1a/b、-2a/b/u、-3a/b/u、-4、-4e、-4f)。它还包含强大的验证功能以及旨在在转换过程中保持文档保真度的功能,例如处理标签、颜色配置文件和字体。
- Aspose.PDF(Python via .NET、Java、.NET):另一个提供 PDF 操作功能的商业库套件。它包含将 PDF 转换为特定 PDF/A 格式(例如 PDF_A_1B)的方法,以及
Validate
用于检查一致性并将结果存储在 XML 日志中的方法。Aspose 表示,他们的验证方法与 Adobe Preflight 保持一致。 - PassportPDF API (REST API):一种基于云的 API 方法。它提供可通过 HTTP 请求调用的特定端点(提供 Python 示例),用于验证 PDF/A 一致性并将文档转换为所需的 PDF/A 标准(例如 PDF/A-3u)。由于基于云,它需要将文档发送到云服务器,并且需要 API 密钥。
2.命令行实用程序:
- Ghostscript:一款功能强大的 PostScript 和 PDF 开源解释器,可在多个平台上使用。它可以通过命令行将 PDF 转换为 PDF/A,主要针对 PDF/A-1 和 PDF/A-2。要成功实现 PDF/A 转换,需要谨慎使用特定的命令行开关(例如,
-dPDFA=1
或-dPDFA=2
,,-dPDFACompatibilityPolicy
以及-sDEVICE=pdfwrite
可能的色彩空间参数,例如-sProcessColorModel
或-sColorConversionStrategy
)。至关重要的是,它通常需要一个PDFA_def.ps
PostScript 定义文件,该文件必须正确配置(例如,提供有效的 ICC 颜色配置文件的路径)才能使转换正常工作。获得可靠且经过验证的输出可能具有挑战性,并且可能在很大程度上取决于输入文件的特性和所使用的 Ghostscript 版本。 - OCRmyPDF(Python CLI):虽然其主要功能是为扫描的 PDF 添加 OCR 文本层,但这款开源工具利用 Ghostscript 和其他实用程序来输出符合 PDF/A 格式的文件(例如,使用
--output-type pdfa-1
)。它可以方便地将扫描文档自动处理为可搜索、可存档的 PDF/A 格式。
选择开发工具时,需要考虑的因素包括目标编程语言或平台、许可问题(尤其是 iText 的 AGPL 许可与商业许可)、所需的具体 PDF/A 版本/级别、验证与转换的需求、集成的简易性、文档和支持的质量以及性能特征。PDFBox 和 Ghostscript 等开源工具可以节省成本,但与 iText 或 Apryse 等商业 SDK(它们专门为此任务提供更高级的 API)相比,通常需要更多的开发工作和专业知识才能实现可靠的 PDF/A 转换。
表 4:用于 PDF/A 转换的开发库和 CLI 工具
6. 验证是关键:验证 PDF/A 合规性
使用声称可以生成 PDF/A 格式的工具创建或转换文档只是第一步。要确保生成的文件真正符合 ISO 19005 标准的严格要求,需要一个独立且关键的流程:验证。
之所以需要验证,是因为文件中存在 PDF/A 标识元数据(通常在 Adobe Reader 等 PDF 阅读器中以通知栏的形式显示)仅仅表明文件符合标准,而非保证文件符合标准。尽管文件声称是 PDF/A 文件,但以下几个因素可能导致文件不符合标准:
- 不完善的创建/转换:用于生成 PDF/A 文件的软件可能包含错误或无法正确实现标准的所有复杂规则。
- 创建后修改:一个完全有效的 PDF/A 文件随后可能会被非 PDF/A 识别的软件进行编辑。此类编辑可能会在不移除原始 PDF/A 元数据标记的情况下引入不合规元素(例如,PDF/A-1 文件中的非嵌入字体、禁用注释、JavaScript 或透明度),从而破坏 PDF/A 的合规性。
- 不一致的解释:从历史上看,不同的验证工具有时会对标准的细微差别做出不同的解释,从而导致相互矛盾的结果。
因此,仅仅依靠创建工具的输出或文件的自我声明不足以实现可靠的归档。使用专用且值得信赖的验证工具进行独立验证至关重要,以确保文件真正符合其声明的 PDF/A 版本和一致性级别的所有要求。
关键验证工具和方法
有几种工具被广泛认可用于 PDF/A 验证:
- veraPDF:这是一款开源验证器,由 PDF 协会和数字保存社区支持开发,旨在提供基于 ISO 19005 规范的权威且受行业支持的工具。它旨在解决早期验证器中发现的不一致问题,通常被视为参考实现。veraPDF 支持针对 PDF/A 所有部分和一致性级别的验证,并提供图形用户界面 (GUI) 工具和命令行实用程序,适用于手动检查和自动化工作流程。许多商业工具也致力于与 veraPDF 兼容。
- Adobe Acrobat Pro 预检: Adobe Acrobat Pro 中的预检工具提供全面的分析和验证功能,适用于各种 PDF 标准,包括所有 PDF/A 版本和级别。它提供详细的报告,识别具体的合规性问题,并通常包含“修复”选项,可尝试自动纠正某些问题。它集成在领先的 PDF 编辑器中,为使用 Acrobat 的专业人士提供便捷的选择。
- Apache PDFBox Preflight:
preflight
开源 Apache PDFBox Java 库的模块提供编程式验证功能。虽然其传统上专注于 PDF/A-1b,但其功能可能会根据版本和配置扩展到其他级别。它允许开发人员将 PDF/A 验证直接集成到基于 Java 的应用程序或工作流程中。 - 其他工具:许多商业 PDF 编辑器(例如 Foxit PDF Editor )和开发者 SDK(例如 Apryse SDK 、Aspose.PDF 和 PassportPDF API )都集成了各自的 PDF/A 验证功能。此外,也有一些在线验证服务(例如 Solid Documents 提到的服务),但应仔细评估其完整性、可靠性以及对潜在敏感文档的处理能力。
验证工具会根据 ISO 19005 相关部分和一致性级别中定义的规则执行一系列检查。这些检查通常涵盖以下方面:验证所有字体是否已嵌入且合法可嵌入;确保色彩空间与设备无关;确认所需元数据 (XMP) 的存在及其格式;检查是否存在禁用内容(加密、JavaScript、多媒体);验证 A 级(标记)的结构要求或 U 级 Unicode 映射的要求;以及确保文件结构的完整性。输出通常为一份报告,详细说明文件是否通过验证;如果未通过验证,则列出发现的具体错误。
执行此验证步骤可确保存档文档符合标准要求,并最大限度地提高其成功长期保存和访问的可能性。
7. 结论:采用 PDF/A 实现可靠归档
在数字信息时代,确保电子文档的长期可访问性和完整性是一项关键挑战。PDF/A 标准 (ISO 19005) 是国际公认的解决方案,它提供了一个强大的框架,用于长期可靠地保存文档的外观和内容。通过强制要求文档独立性、禁止使用不利于文档寿命的功能以及要求文档与设备无关,PDF/A 降低了困扰标准文件格式的技术过时风险。