一种基于JSON生成OFD文件的简化方法及其系统与流程

文档序号:29264736发布日期:2022-03-16 13:30阅读:306来源:国知局
一种基于JSON生成OFD文件的简化方法及其系统与流程
一种基于json生成ofd文件的简化方法及其系统
技术领域
1.本发明属于电子文档技术领域,涉及一种基于json生成ofd文件的简化方法及其系统。


背景技术:

2.ofd版式文档格式整合了国家优质的产业资源,有利于最终形成对pdf等相关国外标准的竞争优势,有助于推动我国版式相关技术和产业的良性发展。
3.由于大多数行业常用的电子票据、电子合同、电子档案等文档都是具有一定的格式,可以制作成模块重复利用的。但是由于ofd是采用xml来描述文档的,其标准的描述比较复杂,不利于模板的制作,对推广ofd版式文档形成了一定的阻碍。


技术实现要素:

4.本发明的目的是提供一种基于json生成ofd文件的简化方法及其系统,解决了简化符合ofd标准的文件生成过程的技术问题。
5.为实现上述目的,本发明采用如下技术方案:一种基于json生成ofd文件的简化方法,包括如下步骤:步骤1:建立模板设计模块,在模板设计模块中生成json格式的模板文件,模板文件包含了用于作为模板的文档的对象、属性和数据;步骤2:将模板文件保存到模板库中,模板库中保存多个模板文件;步骤3:数据上传模块接收用户上传的文档json数据,并将文档json数据上传到服务器中,文档json数据以key-value形式组成,key为模板文件中的对象的id属性,value是字符串、数组或json;一个模板文件包含多个对象,每一个对象的id属性对应一个key,多个对象的id属性可以相同;步骤4:对象转换模块根据模板文件的对象、属性和数据,将对象按照ofd的标准转换为xml格式的对象;步骤5:文件生成模块将xml格式的对象组合成为ofd文件。优选的,在执行步骤2时,所述模板文件设有唯一的模板名,通过模板名对模板文件进行识别。
6.优选的,在执行步骤4时,具体包括如下步骤:步骤4-1:通过模板名调取模板库中的模板文件,根据key取得模板文件中对应id属性的所有对象,得到待转换对象;步骤4-2:根据以下情况进行处理:步骤s4-2-1:如果待转换对象的数据的value是字符串,则直接将字符串赋值到待转换对象的value属性中;步骤s4-2-2:如果待转换对象的数据的value是字符串数组,则将待转换对象复制成和数组长度一样的多个待转换对象副本,并且按顺序将数组的每个值分别赋值到每个待转换对象副本的value属性中;
步骤s4-2-3:如果待转换对象的数据的value是json格式,则将json中的各属性值分别对应替换待转换对象的各属性值;步骤s4-2-4:将待转换对象或待转换对象副本按照ofd的标准,转换成xml格式的对象。
7.优选的,在执行步骤5时,将xml格式的对象的主要内容保存到ofd文档的页面中,xml格式的对象所引用到的字体、颜色和资源分别保存到ofd文档的publicres.xml、documentres.xml、res目录中。
8.一种基于json生成ofd文件的简化系统,包括模板设计模块、模板库、数据上传模块和服务器,模板设计模块、模板库、数据上传模块和服务器之间通过互联网相互通信;在服务器中建立对象转换模块和文件生成模块;模板设计模块用于为用户提供可视化的人机交互界面并生成模板文件;模板库用于保存模板文件,并根据模板文件的模板名建立索引;数据上传模块用于将用户需要生成ofd文件的数据上传到服务器中;对象转换模块用于将json格式的对象转换为xml格式;文件生成模块用于将转换出来的所有xml格式的对象组装成一个ofd文件。
9.优选的,所述模板库部署在数据库服务器中。
10.本发明的有益效果:本发明所述的一种基于json生成ofd文件的简化方法及其系统,解决了简化符合ofd标准的文件生成过程的技术问题,本发明采用简化的json格式数据描述ofd标准中复杂xml内容,减少了生成一个ofd文档的数据量,同时也大大提高了数据的可读性,能有效提高在电子公文、档案、电子票据、电子合同等领域中使用ofd文件的推广效率。
附图说明
11.图1是本发明的流程图。
具体实施方式
12.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
13.实施例1:如图1所示的一种基于json生成ofd文件的简化方法,包括如下步骤:步骤1:建立模板设计模块,在模板设计模块中生成json格式的模板文件,模板文件包含了用于作为模板的文档的对象、属性和数据。
14.本实施例中,用户使用模板设计模块生成一个json格式的模板文件,所述模板文件的内容为:{
ꢀꢀ
name : "tpl1",
ꢀꢀꢀ
paper : {width : 210,height : 297},
ꢀꢀꢀ
defaults : {linewidth : 0.2},
ꢀꢀꢀ
objects : [{type : "text",id : "dept",
ꢀꢀꢀ
box : {x:100,y:7,width:20,height:6.35},
ꢀꢀꢀ
font:{name:"宋体",bold:true,size:6.61},
ꢀꢀꢀ
dx:6.5,dy:5.5,color:{rgb:"156 82 35"},value:"标题"},
ꢀꢀꢀ
{type:"image",id:"3",
ꢀꢀꢀ
box:{x:168,y:3.5,width:15,height:15}},
ꢀꢀꢀ
{type:"line",color:{rgb:"156 82 35"},
ꢀꢀꢀ
x1:68.5,y1:2,x2:141.5,y2:2},
ꢀꢀꢀ
{type:"rectangle",color:{rgb:"0 0 0"},
ꢀꢀꢀ
fillcolor:{rgb:"255 250 205"},linewidth:0.15,x:5,y:30,width:200,height:260},
ꢀꢀꢀ
{type:"path",ctm:"0.45 0 0 0.45 0 0",
ꢀꢀꢀ
box:{x:168,y:97.8,width:5,height:5},
ꢀꢀꢀ
color:{alpha:200,rgb:"0 0 0"},
ꢀꢀꢀ
loop: {count: 5,dx: 6},linewidth:"0.25",value:"m 10.07 5.54 b 10.07 3.04 8.04 1 5.53 1 l 8.7 2.3"}, {type:"image",id:"2",box:{x:58.5,y:135,width:70,height:50}},{type:"barcode",id:"cardnum",box:{x:2,y:1,width:30,height:10},codetype:"code_128",modulewidth: 2,resolution: 150}

]}。
[0015]
步骤2:将模板文件保存到模板库中,模板库中保存多个模板文件;所述模板文件设有唯一的模板名,通过模板名对模板文件进行识别,如本实施例中模板名为“tpl1”。
[0016]
步骤3:数据上传模块接收用户上传的文档json数据,并将文档json数据上传到服务器中,文档json数据以key-value形式组成,key为模板文件中的对象的id属性,value是字符串、数组或json。
[0017]
一个模板文件包含多个对象,每一个对象的id属性对应一个key,多个对象的id属性可以相同。
[0018]
本实施例中,用户上传生成ofd文件的数据的内容为:{
ꢀꢀꢀ
pages : [ {template:"tpl1",
ꢀꢀꢀꢀꢀꢀ
data:{
ꢀꢀꢀꢀꢀꢀꢀꢀ
"dept":"abc部门",
ꢀꢀꢀꢀꢀꢀꢀꢀ
"cardnum":"111111111",
ꢀꢀꢀꢀꢀꢀ
"2":"data:image/jpg;base64,/9j/

/z"
…ꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀ
} ],
ꢀꢀꢀ
docinfo:{
ꢀꢀꢀꢀꢀꢀ
author:"作者1",title:"标题x"},
ꢀꢀꢀ
customdatas:[ {name:"pqb_id",value:"111"}, {
ꢀꢀꢀꢀꢀꢀ
name:"aaa_id",value:"22"} ],
ꢀꢀꢀ
attachments:[ {filename:"data.txt",
ꢀꢀꢀꢀꢀꢀ
content:"附件内容

"} ],}。
[0019]
步骤4:对象转换模块根据模板文件的对象、属性和数据,将对象按照ofd的标准转换为xml格式的对象,具体包括如下步骤:步骤4-1:通过模板名调取模板库中的模板文件,根据key取得模板文件中对象的所有id属性,得到待转换对象;如本实施例中在模板库中读取出模板名为“tpl1”的模板文件的内容,得到待转换对象列表,遍历用户上传的数据的data节点下的内容,根据每个键值对的key查找模板内容中的id,得到一个待转换对象。
[0020]
步骤4-2:根据以下情况进行处理:步骤s4-2-1:如果待转换对象的数据的value是字符串,则直接将字符串赋值到待转换对象的value属性中。
[0021]
步骤s4-2-2:如果待转换对象的数据的value是字符串数组,则将待转换对象复制成和数组长度一样的多个待转换对象副本,并且按顺序将数组的每个值分别赋值到每个待转换对象副本的value属性中。
[0022]
步骤s4-2-3:如果待转换对象的数据的value是json格式,则将json中的各属性值分别对应替换待转换对象的各属性值。
[0023]
步骤s4-2-4:将待转换对象或待转换对象副本按照ofd的标准,转换成xml格式的对象,转换过程具体如下:步骤s4-2-4-1:将paper对象转换为doc_0\pages\page_n\content.xml的ofd:pagearea对象。
[0024]
步骤s4-2-4-2:将字体、颜色属性转换为doc_0\publicres.xml的ofd:font、ofd:colorspace对象。
[0025]
步骤s4-2-4-3:将图像属性转换为doc_0\documentres.xml的ofd:multimedia对象。
[0026]
步骤s4-2-4-4:将objects数组中的对象,根据type属性分别转换为doc_0\pages\page_n\content.xml的ofd:textobject、ofd:pathobject、ofd:imageobject对象。
[0027]
步骤s4-2-4-5:将docinfo转换为ofd.xml的ofd:docinfo对象。
[0028]
步骤s4-2-4-6:将customdatas转换为ofd.xml的ofd:customdatas对象。
[0029]
步骤s4-2-4-7:将attachments数组中的对象转换为doc_0\attachs\attachments.xml的ofd:attachment对象。
[0030]
步骤5:文件生成模块将xml格式的对象组合成为ofd文件,将xml格式的对象的主要内容保存到ofd文档的页面中,xml格式的对象所引用到的字体、颜色和资源分别保存到ofd文档的publicres.xml、documentres.xml、res目录中。
[0031]
实施例2:实施例2所述的一种基于json生成ofd文件的简化系统是于实施例1所述的一种基于json生成ofd文件的简化方法配套使用的系统,包括模板设计模块、模板库、数据上传模块和服务器,模板设计模块、模板库、数据上传模块和服务器之间通过互联网相互通信;在服务器中建立对象转换模块和文件生成模块。
[0032]
模板设计模块用于为用户提供可视化的人机交互界面并生成模板文件。
[0033]
模板库用于保存模板文件,并根据模板文件的模板名建立索引。
[0034]
数据上传模块用于将用户需要生成ofd文件的数据上传到服务器中。
[0035]
对象转换模块用于将json格式的对象转换为xml格式。
[0036]
文件生成模块用于将转换出来的所有xml格式的对象组装成一个ofd文件。
[0037]
优选的,所述模板库部署在数据库服务器中。
[0038]
本发明所述的一种基于json生成ofd文件的简化方法及其系统,解决了简化符合ofd标准的文件生成过程的技术问题,本发明采用简化的json格式数据描述ofd标准中复杂xml内容,减少了生成一个ofd文档的数据量,同时也大大提高了数据的可读性,能有效提高在电子公文、档案、电子票据、电子合同等领域中使用ofd文件的推广效率。
[0039]
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1