技术领域
[0001] 本
发明涉及一种文档的创建和格式修改的方法,尤其涉及一种基于OpenXML的docx文档创建和格式修改方法。
背景技术
[0002] 近年来,随着
电子化办公逐渐普及,以及论文的撰写逐渐增加,人们对于Office工具的使用也越来越多。然而人们花在文档格式修改上的时间占据了相当一部分的文档完成时间,有时甚至是绝大部分,这样造成了时间、人
力及物力大量的浪费。对于很多具有固定撰写
模版的文档,如果用户可以提前定制好模板,就不用花费时间在修正格式方面,而是在内容修饰方面,从而可以大大节省时间,提高文档内容的
水平。
[0003] Ecma Office Open XML("Open XML")是针对字处理文档、演示文稿和电子表格的国际化开放标准,可免费供多个应用程序在多个平台上实现。Microsoft Office(2007、2003、XP、2000)、OpenOffice Novell Edition、开源项目Gnumeric、Neo-Office2.1和PalmOS(Dataviz)已经支持Open XML。Open XML的标准化工作是由Ecma International通过其技术委员会45(TC45)执行的,来自Apple、Barclays Capital、BP、The British Library、Essilor、Intel、Microsoft、NextPage、Novell、Statoil、Toshiba 和 United States Library of Congress的代表参与了该项工作。该标准旨在提供现有ISO标准所无法提供的独特好处,其中包括能够实现从现有二进制格式向基于XML的格式的高保真移植。
[0004] 由于docx格式文档使用OpenXML的规范控制格式,因此对于要求文档具有基本固定格式的创建和修改,可以不使用人工创建和修改的方式,而是通过创建和修改其对应的XML格式文件的方式实现对文档格式控制的自动化处理。
发明内容
[0005] 为克服上述
现有技术的不足,本发明提出一种基于OpenXML的docx文档创建和修改方法。
[0006] 本发明所采用的技术方案是:通过对组成docx文档的XML文件的创建和标签修改实现对docx文档的创建和格式修改。
[0007] 本发明将处理过程设计成如下四个步骤:文档及格式读取步骤,所需格式生成步骤,格式修改步骤和新文档创建步骤。
[0008] 如图1是对程序中整个流程的图表化的展示,是从用户对格式需求的输入到格式规整的docx文档的输出的整个程序运行过程的表示。下面将对每个步骤进行简单的说明。
[0009] 文档及格式读取步骤:本方法需要用户首先输入最终欲生成docx文档的格式,如果用户没有输入对应格式的需求,则本方法会默认为用户产生一个模版。表1则是用户需要在命令行中输入的部分重要的格式信息。待用户输入完毕,还需要选择生成全新的文档还是修改已经存在的docx文档的格式,如果生成全新的文档,则用户还需要将文档的文字单独录入;如果修改已经存在的docx文档的格式,则上传原docx文档即可。
[0010] 所需格式生成步骤:根据用户输入的格式信息,本方法生成一份用于描述该格式的XML文件,其中用户没有定义的格式信息则按照默认格式信息处理。如果用户没有提供格式不整齐的原docx文档而需要生成新的文档,则还需要单独生成一些docx文档特有的XML文件,例如控制不同文件关系的XML文件和表示作者
版权等信息的XML文件等。
[0011] 格式修改步骤:如果用户提供了格式不整齐的docx文档,则本方法需要将用户输入的格式与现有docx文档中控制格式的word/document.xml文件进行对比,如果用户原来XML文件多添加了标签,则将其删除;如果原来XML文件用错了标签,则将其修改;如果原来XML文件少了标签,则将其加上。
[0012] 新文档创建步骤:如果用户没有提供格式不整齐的docx文档,则将格式修改步骤中生成的所有XML文件按照docx文档的形式整合并且生成新的docx文档,如果用户提供了格式不整齐的docx文档,则将格式修改步骤中生成的XML文件替换用户提供的docx文档中的对应XML文件即可。
[0013] 与现有技术相比,本发明的有益效果是大大提高了批量处理相同格式docx文档的效率,节省了用户大量的时间,同时,与目前存在的使用COM组件处理docx文档的方法比较,本发明使用了Java语言来处理,可以更加灵活方便的处理到每一个标签。
附图说明
[0015] 图2为示例文字生成的DOM树。
[0016] 图3为格式修改步骤的流程图。
具体实施方式
[0017] 下面结合附图对本发明进行进一步说明。
[0018] 1、文档及格式读取步骤
[0019] 文档及格式读取步骤是本方法获得用户对文档格式需求的步骤。在本步骤中,用户通过命令行参数的输入传入文档的格式参数,例如标题的格式,段落的格式,每个段落中文字的格式,页眉页脚的格式等等,相关命令参数参考表1。通过本步骤,本方法可以获得用户对格式的需求,如果相关格式没有被用户
指定,本方法会默认指定一种文档格式。同时此步骤还会记录用户需要生成全新的docx文档还是传入格式不整齐的docx文档进行格式修改。
[0020] 表1格式输入命令及功能
[0021]
[0022] 2、所需格式生成步骤
[0023] 所需格式生成步骤是生成XML文件的步骤。无论用户需要生成全新的docx文档还是传入格式不整齐的docx文档,都需要生成word/document.xml文件,这里使用的XML文件中的标签都是微软公开可以使用的标签,例如是word/document.xml文件的根元素,是文档的文档体,是一个新段落,表示同一范围内分享相同的特性集,定义了一个范围的文本等等。
[0024] 如果用户需要生成全新的docx文档,则本方法还会为用户生成其他的XML文件,例如表示不同XML文件之间关联的XML控制文件,以及显示作者版权信息的XML文件。
[0025] 3、格式修改步骤
[0026] 格式修改步骤主要是在用户输入格式不整齐的docx文档时会进入的步骤。本步骤使用Java语言处理word/document.xml文件,因此有两种选择,SAX解析和DOM解析。
[0027] 在SAX解析器装载XML文件时,它遍历文件文档并在其主机应用程序中产生事件(经由回调函数、指派函数或者任何可调用平台完成这一功能)表示这一过程。SAX解析器在某些方面优于DOM
风格解析器。SAX解析器的内存使用量一般远低于DOM解析器使用量。DOM解析器在任何处理开始之前,必须把整棵树放在内存,所以DOM解析器的内存使用量完全根据输入资料的大小。相对来说,SAX解析器的内存内容,是只基于XML档案的最大深度(XML树的最大深度)和单一XML项目上XML属性储存的最大资料。这两个总是比整棵析树本身还小。
[0028] DOM(Document Object Model)解析方法,即文档对象模型,可以以一种独立于平台和语言的方式
访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。可以把DOM认为是页面上数据和结构的一个树形表示,不过页面当然可能并不是以这种树的方式具体实现。
[0029] SAX最大的缺点是不允许对XML文件进行随机访问,这对于频繁修改标签的本方法来说,是非常不利的,而且一般的docx文档不会特别的庞大,使用DOM方式明显优于SAX方式,因此本方法采用DOM解析方式来读取XML文件。
[0030] 图2显示的是一段最简单的文字”Hello OpenXML”在DOM树中的表示。
[0031] 在用户提供给本方法docx文档后,程序会需要用户输入对于格式的要求,根据用户的定制,将读取到的XML文档的文档树和标准DOM树进行对比,修改不标准的文档树。遇到缺失的格式标签进行补全,遇到使用错误的格式标签进行修改,遇到使用冗余的标签进行删除,通过循环这些操作,完成对整个XML文档的扫描和修改。图3所示为格式修改步骤的流程图。
[0032] 4、新文档创建步骤
[0033] 如果用户输入了格式不整齐的docx文档,则经过格式修改模
块后,新的word/document.xml文件已经完全符合用户对于格式的需求。在新文档创建步骤中,本方法将新的word/document.xml文件和其余的XML文件重新整合,并且压缩生成新的zip文件。最后通过格式的转换,生成新的docx文件返回给用户。同时第一个步骤中还保留了用户转换前的文档,将两个文档均返回给用户,供用户比较使用。如果用户没有输入任何docx文档,而是需要生成全新的docx文档,则新文档创建步骤中为用户将第二步中生成的word/document.xml文件和其余组成docx文档所必须的XML文件一起按照docx文档的打包格式一起压缩成全新的zip文件,并且将文件转换成docx文档返回给用户。至此已经完成了基于OpenXML的docx文档创建和修改方法的所有过程。