国产ofd文件组成结构

Posted by mjTree on January 11, 2024

更新于:2024-01-28 16:30

一、关于OFD格式

引用百度百科介绍:
OFD(Open Fixed-layout Document) ,是由工业和信息化部软件司牵头中国电子技术标准化研究院成立的版式编写组制定的版式文档国家标准,属于中国的一种自主格式,要打破政府部门和党委机关电子公文格式不统一,以方便地进行电子文档的存储、读取以及编辑 。

2016-10-13 国家标准委发布了GB/T 33190-2016《电子文件存储与交换格式 版式文档》 ,也就是上面介绍的 OFD 格式。

另外还有一个格式容易让人产生混淆,ODF(Open Document Format),作为开放文档格式,它是一种规范,基于 XML 的文件格式,因应试算表、图表、简报和文书处理文件等电子文件而设置。虽然 OFD 也是基于 XML,但两者还是不一样的。针对 ODF 还有一个小故事,不少人认为,开放文档格式(ODF)作为 ISO 已经批准的格式协议,但微软大力推广自家 OOXML 开放式协议,导致 ODF 推广困难。

二、OFD格式的意义

站在国家安全可靠层面,提出了国家标准,OFD 绝对具有很重大的意义。

主要包括几个层面:
1、安全:原来发放文件需要通过版式再转换,如果完全用国外技术安全不能保证。OFD是完全自主的,又具有航天的背景,可靠性毋庸置疑。
2、带动产业发展:通过基础软硬件平台带动整个产业,激活国民经济。
3、创新:有了民族产业,创新驱动很重要。在基础软硬件上可以找到更多的面,包括阅读的方式、档案、电子发票、电子签章、电子病历等等,可以辐射到很多领域。而且站在国家的高度可以把社会的技术人才整合起来,放大价值。
4、节约成本:让人们感受到自主知识产权的力量的同时比国外的产品价格更低,节约了建设和使用成本。

和 PDF 相比,OFD 对于技术的描述并不全面,很多方面都不涉及,由于是国家版式标准,我们更希望为我们的需求服务。在一些实际应用过程中需求比较集中的方面,OFD 做了很多的工作,以使得这个标准更好的为我们的应用服务。下表所示,列举一些常见的特性用于对比。

标准 OFD PDF
产权情况 自主产权 ISO
是否开放 完全开放 完全开放
编码 xml postscript
打包 zip
数字签名 支持 支持
书签 支持 支持
公文域 支持 不支持
水印 支持 支持
3D 不支持 支持
多媒体 支持 支持
动画 不支持 支持
国密 支持 不支持
拓展机制 分离式拓展 不支持分离式拓展
标引机制 支持且与内容分离 与内容难分离

三、OFD文件结构

下图展示了一个简单的 OFD 格式文件,该 文件 可以下载到本地后进行 zip 解压可以得到目录结构。需要打开文件展示内容到话,可以使用 在线网页 打开,或其他软件打开。

1、文件层次组织结构

File_Decompression

这里就不手写一个 OFD 文件了,我们借用上面到样例文件开始介绍内部文件结构以及对应到作用。

OFD.xml:文件主入口文件,一个包有且只有一个 OFD.xml 文件,此文件名不应该修改
Doc_N:第 N 个文件的文件夹
Document.xml:文档的根节点
Page_N:第 N 页文件夹
Content.xml:第 N 页的内容描述
PageRes.xml:第 N 页的资源描述
Res:资源文件夹
PublicRes.xml:文档公共资源缩阴
DocumentRes.xml:文档自身资源索引
Image_M.png/Font_M.ttf:资源文件
Signs:数字签名存储目录
Signatures.xml:签名列表文件
Sign_N:第 N 个签名/签章
Signature.xml:签名/签章描述文件
Scal.csl:电子印章文件
SignedValue.dat:签名值文件

OFD_Structure

2、容器结构

关于ooxml协议的opc 文章中我们提到了每个OPC包是一个使用ZIP压缩格式的容器,OFD 也不例外,容器是一个虚拟的存储系统,将各类数据描述文件聚合起来,并且提供相应的访问接口和数据压缩方法。

OFD_Container

四、OFD基本结构

1、基础数据类型

类型 说明 示例
ST_Loc 包结构内文件的路径,“.”表示当前路径,“..”表示父路径。 ”/Pages/P1/Content.xml” ”../Pages/P1/Res.xml”
ST_Array 数组,以空格来分割元素。元素可以是除ST_Loc,ST_Array外的数据类型,不可嵌套 “1 2.0 5.0”
ST_ID 标识,无符号整数,应在文档内唯一。0表示无效标识 “1000”
ST_RefID 标识引用,无符号整数,此标识应为文档内已定义的 “1000”
ST_Pos 点坐标,以空格分割,前者为x值,后者为y值,可以是整数或者浮点数 “0 0”
ST_Box 矩形区域,以空格分割,前两个值代表了该矩形的左上角的坐标,后两个值依次表示该矩形的宽和高,可以是整数或者浮点数,后两个值应大于0。 “10 10 50 50”

五、小结与展望

OFD 标准从 2017-05 开始正式实施推广,到现在以及快有七个年头了。但是在国内办公环境并不常见(在公司出售文档解析能力产品中遇到OFD格式并不多见),主要原因如下:

1、pdf 格式根生蒂固,生态完整,生成和阅读成本低,而 ofd 作为一个新事物,生态不完整,转换成本高,目前主要存在于电子政务领域。
2、用户短期都在无法离开 pdf 以及 office 这样的环境(虽然主流软件已经开始支持OFD格式了)。

这些局限性作为一个新生事物是必须面对的,国产软件必将经历这些困难才能涅槃重生。目前 OFD 标准的制定已经有了一个很好的开端,各厂商也都在积极构建 OFD 生态,接下来的应用推广、普及将会成为一个趋势,无论在电子文件、公文、数字印刷、电子发票、档案管理等领域,都将逐步向 OFD 格式转变。