为什么做这个软件?

做数据库监控系统的时候,涉及到报表模块需要使用类似iText之类的Java开发组件。可是iText商用需要购买许可license,只好放弃了转而计划自行开发PDF文件的Java开发组件。经过比对OFD和PDF的相关标准,觉得OFD可能是更好的一个选择。

什么是OFD 文档?

《电子文件存储与交换格式版式文档》,简称OFD(OpenFixed-Layout Document),是我国自主研发的版式格式标准,是国家电子文件标准体系的重要组成部分。

在当今的电子时代,无论是电子商务、电子公务,还是信息发布、数字出版、档案管理、电子交换等都不可避免地涉及到了版式应用,因此也就不可避免地依赖于版式文档格式。就版式文档格式而言,目前,国际上比较通用的是Adobe 公司于1992年秋天首次发布PDF,国内之前出现的书生、CEB版式文件目前基本上都已经越来越淡化,现在被制定为国家标准的版式文件是由工业和信息化部软件司牵头中国电子技术标准化研究院成立的版式编写组制定的版式文档国家标准,即OFD(Open Fixed-layout Document)。

OFD特点

OFD是版面呈现效果固定的电子文档格式,OFD的呈现与设备无关,在各种设备上阅读、打印或印刷时,版面固定、不跑版,即所见即所得,使电子文档在使用过程中,呈现效果不因软硬件环境、操作者的变化而变化,在版式、版面、字体、字号等方面与纸质文件保持完全一致。举例来说,在UNIX系统下创建的OFD文档,在Mac或Windows下同样能够打开使用。这个特点非常适合于网络传递中的信息交换,以免除乱码的苦恼。这是OFD最初设计的基本要求和目标。也就是说,OFD采用XML技术描述文件数据,真实地保持原有文件中文字、图表、公式、色彩等版式信息,且这种特性不随着平台变化而发生改变。

OFD是我国电子公文交换和存储格式标准,具有真实地保持文件中版式信息的特性,且这种特性不随着软硬件环境的变化而发生改变。OFD采用XML技术,采用“容器+文档”的方式描述和存储数据。容器是一个虚拟存储系统,将各类数据描述文件聚合起来,并提供相应的访问接口和数据压缩方法。

OFD文档格式的结构分为三层:

a) 虚拟存储系统:包括包组织结构及包内目录组织结构;

b) 文档模型:包括文档、页面、大纲、文件级资源等组织结构;

c) 页面内容描述:包括页面级资源、图形、图像和文字等。

OFD格式优势

OFD格式是我国自主可控的电子文件版式文档格式。

1. 产权属于自主产权;

2. 具有便携性:文件小,可压缩比率大。测试显示生成的文件体量比PDF还要小;

3. 具有开放性:易于入门,对于使用者来说更具开放性。

4. 具有扩展性:预留了可扩展入口和自定义标引,设置了非接触式引用机制,为特性化提供支持。

5. 呈现效果与设备无关,在各种设备上阅读、打印或印刷时,版面固定、不跑版。

6. 应用广泛:无论是电子商务、电子公务,还是信息发布、文件交换,档案管理等都需要版式文档的技术支持。

在OFD格式产生之前,电子文件存档格式并没有统一的国家或行业标准,档案工作中普遍采用DOC、WPS、PPTX等流式文件格式。内容易更改、转移过程存在安全隐患,并不符合电子文件长期保存要求。

一些格式依赖非自主可控技术,使用和服务都受限于外部厂商和技术,存在安全隐患。格式标准不公开,私有版式文档的格式解析、标准解释掌握在国外企业手中,文档信息资源的保密性存在隐患。

iOFD设计目标

一种简单的OFD文档解决方案

iOFD提供常用的元素组件如:段落、图标、图片、表格、页头、页尾、页面、页码、水印等,它可以允许程序员不了解OFD底层格式的情况下进行OFD文档设计。iOFD的基础组件可以在很短时间内掌握,程序员从一开始就可以很有效率的完成文档开发工作。

iOFD的部署非常简单,只需要把jar导入工程目录即可;相比在各类不同的客户端安装程序或者控件的模式,显著降低部署、运维、客户和版本更新的工作量,降低服务成本。

高性能的OFD文档解决方案

iOFD可以在零基础上,动态的构建OFD文档。iOFD可以完美的与传统模式系统设计结合,从类似数据库、文件等异构的数据源中抽取数据,按照设计师的意愿生成大量的OFD文档提供给用户阅览。

相对与当前市面上先生成其他格式文档,然后再转换为OFD文档的方案,iOFD免去了生成中间格式文件的过程,直接输出OFD文档,能够节省系统开销,提升系统性能。

架构中立

iOFD仅依赖dom4j、log4j等部分开源组件,没有复杂的依赖逻辑,不依赖其他商业软件。

iOFD仅实现了与OFD文档相关的服务,与应用系统其他框架、业务模型、通讯协议无直接关联。

支持基于SM2、SM3等国产密码算法的电子签章

iOFD支持基于国产密码算法的电子签章服务。程序员通过调用iOFD的API即可实现对OFD文档电子签章,确保OFD文档的完整性和不可抵赖性。