OFD 的定义与背景
OFD(Open Fixed-layout Document,开放固定版式文档)是由中国国家标准化管理委员会发布的版式文档格式标准,标准编号为 GB/T 33190-2016。与 PDF 由 Adobe 公司制定、后成为 ISO 32000 国际标准的路径不同,OFD 是中国自主制定的版式文档国家标准,设计目标是解决版式文档领域的自主可控问题。
版式文档的核心特征是"固定版面"——文档的布局、字体、图片位置在创建时即确定,无论在何种设备上打开都呈现一致的视觉效果。这与 Word、HTML 等"流式文档"形成对比:流式文档会根据屏幕尺寸、字体可用性等因素重新排版,而版式文档锁定版面,确保所见即所得。
OFD 文件采用 XML 描述文档结构,以 ZIP 包形式组织,本质上是一个包含多个 XML 文件和媒体资源的压缩容器。它支持文字、图片、图形、签名、印章、动画等版式元素,能够精确保存文档的版面布局。标准由版式文档产业联盟(OFD 联盟)推动产业化,2016 年正式发布为国家推荐性标准。
自 2020 年起,OFD 在党政机关电子公文系统中被广泛采用,逐步成为政务领域版式文档的事实标准。如今在电子发票、电子证照、电子合同等场景中,OFD 文件越来越常见。理解 OFD 的技术体系,已经成为处理政务文档、对接政企系统的前置知识。
OFD 与 PDF:两种版式文档的技术对比
OFD 和 PDF 都是版式文档格式,功能定位相似——都用于精确保存文档版面、确保跨设备一致性。但两者在技术体系和生态上存在显著差异,理解这些差异有助于在不同场景下选择合适的格式。
| 维度 | OFD | |
|---|---|---|
| 格式标准 | 中国国家标准 GB/T 33190-2016 | ISO 32000 国际标准(源自 Adobe) |
| 文件结构 | XML + ZIP 容器,结构开放 | 二进制/文本混合,结构相对封闭 |
| 使用场景 | 政务公文、电子证照、招投标 | 通用文档、合同、报告、出版物 |
| 支持工具 | 数量少,以数科、福昕等国产工具为主 | 生态成熟,Adobe、Foxit 及大量免费工具 |
| 签章支持 | 原生支持电子签章,符合国密标准 | 支持数字签名,国密支持需额外适配 |
| 国际认可 | 以国内应用为主 | 全球通用 |
下面的流程图从标准来源、文件结构、应用生态三个维度对比了 OFD 和 PDF 的技术路线:
1. 格式标准
OFD 是中国国家标准,技术规范公开透明,文档结构基于 XML,便于国产化适配和国密算法(SM2、SM3、SM4)集成。PDF 是国际标准,生态最为成熟、全球通用,但在涉密和政务场景下存在自主可控方面的考量。两者并非替代关系,而是面向不同合规要求和应用领域的并行标准。
2. 文件结构
这是 OFD 和 PDF 最本质的技术差异。OFD 文件本质上是 ZIP 压缩包,内部用 XML 描述页面、文字、图片等元素,结构清晰、易于解析。PDF 采用二进制和文本混合的格式,内部由对象、交叉引用表、 trailer 等结构组成,相对复杂。对开发者而言,OFD 的可读性和可解析性更强;对最终用户而言,两者打开后的视觉效果类似。
3. 支持工具
PDF 的工具生态极为丰富,从免费的浏览器内置查看器到专业的 Adobe Acrobat,各种编辑、转换、压缩工具应有尽有。相比之下,OFD 的工具链尚在发展初期,能够查看和编辑 OFD 的软件数量有限,支持 OFD 压缩的工具更是稀缺。这是 OFD 当前生态的主要短板。
4. 签章支持
OFD 原生支持符合国密标准的电子签章和印章验证,签章数据作为独立节点嵌入文档结构,能够满足公文流转中对真实性、完整性和不可抵赖性的要求。PDF 支持基于 PKI 体系的数字签名,但在国密算法适配方面需要额外开发。在政务公文场景下,OFD 的签章体系与国密基础设施的契合度更高。
OFD 的文件结构:XML + ZIP 容器
理解 OFD 的文件结构,是理解其压缩方法和工具生态的基础。与 PDF 的二进制格式不同,OFD 采用了与现代办公文档(如 OOXML、ODF)类似的"XML + ZIP 容器"架构。
容器组织
一个 OFD 文件本质上是一个 ZIP 压缩包。将其后缀名改为 .zip 后解压,可以看到清晰的多层目录结构。最外层包含一个 OFD.xml 入口文件,它声明了文档的基本信息和物理文件路径;内部按"文档(Doc)—页面(Page)—对象(Object)"的层级组织内容。
XML 描述层
OFD 用 XML 文件描述文档的逻辑结构和页面内容。Document.xml 定义文档的页面树、大纲、元数据等;每个页面对应一个 Content.xml,描述该页面的文字、图片、图形、路径等版面对象及其坐标、样式。这种基于 XML 的描述方式带来几个特点:
- 可读性强:任何文本编辑器都能查看 OFD 的页面描述,便于调试和审计
- 易于解析:标准 XML 解析器即可读取文档结构,无需专门的二进制解析器
- 可扩展性好:新增功能只需扩展 XML Schema,不影响已有结构
与 PDF 二进制格式的对比
PDF 采用二进制和文本混合的格式,内部由带编号的对象(Object)组成,对象之间通过交叉引用表(Cross-Reference Table)关联,文件末尾的 Trailer 指向根对象。这种设计在文件紧凑性上有优势,但结构不透明,普通用户无法直接查看内部内容。
两者在压缩层面的差异也很明显:OFD 已经是 ZIP 容器,内部资源经过一层压缩,再次整体压缩收益有限,优化重点在于内部资源(图片、字体);PDF 的压缩则分散在各个流对象(Stream)上,每个流对象可以独立选择压缩算法。
OFD 在政务公文中的应用
OFD 在政务领域的推广有其现实背景。传统政务公文以纸质为主,电子化过程中需要一种能够精确保存版面、支持电子签章、符合国家密码管理要求的版式格式。PDF 虽然功能强大,但作为国外标准,在涉密信息系统中使用存在自主可控方面的顾虑。OFD 作为国家标准,填补了这一空白。
电子公文
全国多地党政机关的电子公文系统已采用 OFD 作为标准格式。公文的起草、审核、签发、分发、归档全流程都以 OFD 文件为载体,配合国密电子签章实现公文的防篡改和可追溯。OFD 的固定版面特性确保公文在不同办公系统间流转时版面一致,不会因字体缺失或软件差异而错版。
电子证照
电子营业执照、不动产登记证、电子身份证等电子证照逐步向 OFD 格式迁移。OFD 文件可以嵌入证照信息、持证人照片、发证机关电子印章,并支持防伪验证。相比纸质证照,OFD 电子证照便于在线核验、批量管理和跨部门共享。
电子发票
部分地区的电子发票已采用 OFD 格式。OFD 发票包含发票代码、金额、税额等结构化数据,同时保留发票的版式外观,既便于人工查阅,也便于机器解析提取信息。OFD 发票的签章机制保证了发票的真实性和不可抵赖性。
随着应用规模扩大,OFD 文件体积问题逐渐显现——大量扫描件、高清印章图片嵌入导致公文动辄数十 MB,给存储和传输带来压力,OFD 压缩需求随之产生。
OFD 压缩方法
OFD 压缩的原理与 PDF 压缩高度相似,核心都是优化文件内部占用空间最大的部分。由于 OFD 本身是 ZIP 容器,文件结构已经过一层 DEFLATE 压缩,因此 OFD 压缩的关键不在于再打一层压缩包,而在于优化内部资源(图片、字体)。
图片重采样
OFD 文件中的扫描件、印章图片通常是体积大头。一份扫描公文可能嵌入多张 300dpi 的高清扫描页,每张数 MB。将高分辨率图片降至合理分辨率(如 300dpi 降至 150dpi),可以大幅减小体积,同时对屏幕阅读和打印的影响在可接受范围内。
重采样需要权衡分辨率与清晰度:政务公文的文字内容在 150dpi 下仍可清晰辨认,但精密印章的细节可能需要更高分辨率。合理做法是根据图片用途分别设置目标分辨率。
字体子集化
OFD 文件嵌入完整字体是为了保证跨设备显示一致,但一份文档通常只用到字体文件中的一小部分字符。字体子集化(Font Subsetting)只保留文档中实际使用的字符字形,丢弃未使用的字体数据。
这一技术对中文文档效果尤其明显。一个完整的中文字体文件通常包含数万个汉字字形,体积可达 10MB 以上;而一份公文实际用到的汉字可能只有一两千个,子集化后字体数据可减少 80% 以上。
清理冗余对象
OFD 包内可能存在未引用的资源和重复对象:编辑过程中删除的图片可能仍残留在资源目录中,多次保存可能产生重复的元数据。清理冗余对象就是遍历文档结构,移除所有未被页面引用的资源,精简文档结构树。
图片格式优化
OFD 支持嵌入多种图片格式,包括未压缩的位图(BMP)和压缩格式(JPEG、PNG)。将未压缩的位图转为 JPEG 等压缩格式,可以直接减少图片资源占用。对于大面积纯色的印章图形,PNG 可能比 JPEG 更小;对于色彩丰富的扫描照片,JPEG 压缩比更高。
下面的代码演示了如何解压 OFD 文件并分析其内部资源占用,这是压缩优化的第一步:
import zipfile
import os
from collections import defaultdict
def analyze_ofd(ofd_path):
"""解压并分析 OFD 文件内部资源占用"""
with zipfile.ZipFile(ofd_path, 'r') as zf:
# 统计各类型文件的大小
type_sizes = defaultdict(int)
type_counts = defaultdict(int)
total_size = 0
for info in zf.infolist():
ext = os.path.splitext(info.filename)[1].lower()
type_sizes[ext] += info.compress_size
type_counts[ext] += 1
total_size += info.compress_size
print(f"OFD 文件总大小: {total_size / 1024 / 1024:.2f} MB\n")
print(f"{'类型':<10} {'数量':<8} {'大小(MB)':<12} {'占比'}")
print("-" * 45)
for ext, size in sorted(type_sizes.items(), key=lambda x: -x[1]):
pct = size / total_size * 100
print(f"{ext or '(无后缀)':<10} {type_counts[ext]:<8} "
f"{size / 1024 / 1024:<12.2f} {pct:.1f}%")
# 使用示例
# analyze_ofd("sample.ofd")
运行这类分析脚本,你通常会发现 OFD 文件中 80% 以上的体积来自图片资源(.jpg、.png、.bmp),字体文件(.ttf、.otf)次之。这印证了 OFD 压缩的核心策略:优先优化图片,其次优化字体。
一个 50MB 的 OFD 扫描公文,经过合理的图片重采样和字体子集化处理后,通常可以压缩到 8-12MB,文字和印章依然清晰可辨,完全满足政务流转和归档要求。
OFD 工具生态现状
OFD 格式虽然国家标准地位明确,但工具生态远不如 PDF 成熟。目前市面能查看 OFD 的软件以数科阅读器、福昕 OFD 等国产工具为主,浏览器原生不支持 OFD 预览,能够对 OFD 进行压缩的工具更是屈指可数。
工具生态的薄弱带来两个现实问题。第一,普通用户拿到一个 OFD 文件后,可能找不到合适的工具打开,需要专门下载阅读器。第二,当 OFD 文件体积过大时,缺乏现成的压缩工具,很多用户只能原样存储或传输,承受存储和带宽成本。
从技术角度看,OFD 基于 XML + ZIP 的开放结构,理论上解析和处理的门槛低于 PDF 的二进制格式。工具生态的滞后更多是市场推广和应用规模的问题,而非技术障碍。随着 OFD 在政务、金融等领域的应用持续扩大,工具链有望逐步完善。
对比表格:OFD 与 PDF 压缩方法
| 压缩方法 | OFD 适用性 | PDF 适用性 | 说明 |
|---|---|---|---|
| 图片重采样 | 高 | 高 | 两者体积大头均为图片,降分辨率效果最显著 |
| 字体子集化 | 高 | 高 | 中文文档尤其有效,可减少 80% 以上字体数据 |
| 清理冗余对象 | 中 | 中 | 移除未引用资源和重复对象,精简结构 |
| 图片格式优化 | 高 | 高 | 位图转 JPEG,按图片特性选择最优格式 |
| 整体 ZIP 压缩 | 低(已是 ZIP) | 中 | OFD 已是 ZIP 容器,再压缩收益有限 |
| 流对象压缩 | 不适用 | 高 | PDF 独有,每个 Stream 可独立选择压缩算法 |
常见问题
Q1:OFD 文件可以转成 PDF 吗?
可以。部分 OFD 阅读器和转换工具支持将 OFD 导出为 PDF。但需要注意,转换过程中电子签章等 OFD 特有信息可能无法完整保留,因为 OFD 的国密签章体系与 PDF 的 PKI 签名体系并不完全对应。建议在需要长期归档或法律效力的场景下谨慎转换,转换前做好备份,并验证转换后文档的签章状态。
Q2:OFD 压缩会影响电子签章的有效性吗?
正规的 OFD 压缩只优化图片和字体等资源,不修改签章数据和文档哈希校验信息,因此不会影响电子签章的有效性。但需要注意,签章的完整性校验通常覆盖文档的特定部分,如果压缩过程修改了被签章保护的内容,签章验证会失败。建议使用专业工具并在压缩后重新验证签章状态,确保公文法律效力不受影响。
Q3:普通办公场景需要用 OFD 吗?
一般商务文档使用 PDF 即可,OFD 主要用于政务公文、电子证照等官方场景。如果不涉及政务对接,无需刻意使用 OFD 格式。但如果需要与政府机关交换电子公文、提交 OFD 格式的招投标文件,则必须使用 OFD。两者并非替代关系,而是根据合规要求和应用场景选择。
Q4:OFD 和 PDF 哪个体积更小?
没有绝对结论。文件体积主要取决于内部资源(图片、字体)而非容器格式本身。同等内容下,OFD 的 XML 描述可能比 PDF 的二进制描述略大,但两者都使用压缩,差异通常在可忽略范围内。决定体积的关键是图片分辨率和字体嵌入策略,而非格式选择。一份嵌入大量高清扫描件的 OFD 公文,体积远大于一份纯文本 PDF;反之亦然。
总结
OFD 和 PDF 虽然同为版式文档格式,但代表了不同的技术路线和应用生态:
- OFD 作为中国国家标准(GB/T 33190-2016),采用 XML + ZIP 的开放容器结构,原生支持国密电子签章,在政务公文、电子证照、电子发票等国内官方场景中地位稳固。其工具生态尚在发展初期,但开放的结构为国产化适配和定制开发提供了便利。
- PDF 作为国际标准(ISO 32000),采用二进制/文本混合格式,工具生态全球最成熟,在通用办公场景中不可替代。
两者在压缩方法上高度相似——核心都是优化内嵌图片和字体资源。OFD 压缩的四项关键技术(图片重采样、字体子集化、清理冗余对象、图片格式优化)与 PDF 压缩一脉相承,因为版式文档的体积构成规律是相通的。
理解 OFD 的技术体系,关键在于把握它的"XML + ZIP 容器"本质:这是一种开放、可解析、易于国产化适配的版式文档架构,其压缩优化的重点与 PDF 一致,都在内部资源而非容器本身。
相关阅读: