OFD(Open Fixed-Layout Document) 是电子文件管理的基础标准之一,由于其固定版式呈现的特点,各类文档排版后的固化结果都可使用本标准来承载 ;同时对于各行业管理中有关元数据、语义、数字签名等要求,本标准也提供相应的可扩展机制予以支持。OFD作为基础标准在版式文档范畴内反映了行业管理要求,提供了足够的扩展性,与行业应用中的标准规范是并行的,各行业规范只在版式文档存储格式方面引用本标准。OFD版式文件具有以下特点:
(1)采用XML技术描述文本数据,采用“容器+文档”的方式描述和存储数据;
(2)真实地保持原有文档中文字、图表、公式、色彩等版式信息,且这种特性不随平台变化而改变;
(3)采用二维向量图像模型,可以描述包括文字、图形、图像等经过精密排版的页面像素;
(4)国家层级的自主版式格式,实现了文档的原始内容和批注附加内容的分离保存
可在国家标准全文公开系统预览《GB∕T 33190-2016 电子文件存储与交换格式 版式文件》标准内容;
OFD格式转换:北京数科网维文档转换预览,福昕OFD版式办公套件安装完成后可通过虚拟打印机转换为OFD格式,永中DCS
准备工作:档案章图片(生成细节略)、OFD文件、Visual Studio IDE
可将文件后缀名改为zip再解压以查看OFD文件的层次结构。实际编码中需要引入System.IO.Compression.ZipFile包。
文件 |
说明 |
OFD.xml |
文件主人口文件,一个包内存在且只存在一个OFD.xml 文件,此文件名不应修改 |
Doc_0/Document.xml |
文档的根节点 |
Doc_0/DocumentRes.xml |
文档自身资源索引 |
Doc_0/PublicRes.xml |
文档公共资源索引 |
Doc_0/Pages/Page_0/Cotent.xml |
文档第0 页的内容描述 |
Doc_0/Res/seal.png |
文档资源文件 |
ZipFile.ExtractToDirectory(ofd文件路径, 解压目录);
注意:OFD标准中XML文档使用的命名空间为http://www.ofdspec.org/201 6,其标识应为ofd;应在包内各XML文档的根节点中声明defaults:ofd。元素节点应使用命名空间标识,元素属性不使用命名空间。
有些厂商转换的OFD文件命名空间为http://www.ofdspec.org或其它,因此需要根据文件指定的命名空间来读取和写入数据。
ID |
XML文件 |
XPath |
数据 |
1 |
OFD.xml |
ofd:OFD/ofd:DocBody/ofd:DocRoot |
主入口文件路径 |
2 |
Document.xml |
ofd:Document/ofd:CommonData/ofd:MaxUnitID |
文档全局自增ID |
3 |
Document.xml |
ofd:Document/ofd:CommonData/ofd:DocumentRes |
资源文件路径 |
4 |
Document.xml |
ofd:Document/ofd:Pages/ofd:Page[1] |
首页路径 |
5 |
DocumentRes.xml |
ofd:Res/ofd:MultiMedias/ofd:MultiMedia/ofd:MediaFile[text()=‘seal.png‘] |
档案章图片名称 |
6 |
DocumentRes.xml |
ofd:Res/ofd:MultiMedias/ofd:MultiMedia/ofd:MediaFile[text()=‘seal.png‘]/.. |
档案章图片资源ID |
7 |
Content.xml |
ofd:Page/ofd:Area/ofd:PhysicalBox |
页面尺寸信息 |
(1) 将六格档案章图片复制到解压目录相对路径Doc_N/Res下,Doc_N由数据1决定;
(2) DocumentRes.xml文件ofd:Res/ofd:MultiMedias路径下创建子元素MultiMedia,DocumentRes.xml路径由数据3决定,并自增数据2写入ID属性;
(3) 在上一步MultiMedia节点创建子元素MediaFile;
(4) Content.xml文件ofd:Page/ofd:Content/ofd:Layer路径下创建子元素ImageObject,Content.xml路径由数据4决定,并自增数据2写入ID属性;其中Boundary、CTM由数据7计算得出,需将图片像素先转换为毫米再进行计算,ResourceID为第(2)步的自增ID;
(5) 更新Document.xml文件ofd:Document/ofd:CommonData/ofd:MaxUnitID值为数据2;
(6) 保存以上所有修改
打包并删除临时解压文件
ZipFile.CreateFromDirectory(解压路径, ofd文件路径);
Directory.Delete(解压路径, true);
《GB∕T 33190-2016 电子文件存储与交换格式 版式文件》OFD标准学习及应用
原文:https://www.cnblogs.com/WalkingDead/p/11679072.html