技術(shù)領(lǐng)域
本發(fā)明涉及一種文檔的創(chuàng)建和格式修改的方法,尤其涉及一種基于OpenXML的docx文檔創(chuàng)建和格式修改方法。
背景技術(shù):
近年來,隨著電子化辦公逐漸普及,以及論文的撰寫逐漸增加,人們對于Office工具的使用也越來越多。然而人們花在文檔格式修改上的時(shí)間占據(jù)了相當(dāng)一部分的文檔完成時(shí)間,有時(shí)甚至是絕大部分,這樣造成了時(shí)間、人力及物力大量的浪費(fèi)。對于很多具有固定撰寫模版的文檔,如果用戶可以提前定制好模板,就不用花費(fèi)時(shí)間在修正格式方面,而是在內(nèi)容修飾方面,從而可以大大節(jié)省時(shí)間,提高文檔內(nèi)容的水平。
EcmaOfficeOpenXML(OpenXML)是針對字處理文檔、演示文稿和電子表格的國際化開放標(biāo)準(zhǔn),可免費(fèi)供多個(gè)應(yīng)用程序在多個(gè)平臺上實(shí)現(xiàn)。MicrosoftOffice(2007、2003、XP、2000)、OpenOfficeNovellEdition、開源項(xiàng)目Gnumeric、Neo-Office2.1和PalmOS(Dataviz)已經(jīng)支持OpenXML。OpenXML的標(biāo)準(zhǔn)化工作是由EcmaInternational通過其技術(shù)委員會45(TC45)執(zhí)行的,來自Apple、BarclaysCapital、BP、TheBritishLibrary、Essilor、Intel、Microsoft、NextPage、Novell、Statoil、Toshiba和UnitedStatesLibraryofCongress的代表參與了該項(xiàng)工作。該標(biāo)準(zhǔn)旨在提供現(xiàn)有ISO標(biāo)準(zhǔn)所無法提供的獨(dú)特好處,其中包括能夠?qū)崿F(xiàn)從現(xiàn)有二進(jìn)制格式向基于XML的格式的高保真移植。
由于docx格式文檔使用OpenXML的規(guī)范控制格式,因此對于要求文檔具有基本固定格式的創(chuàng)建和修改,可以不使用人工創(chuàng)建和修改的方式,而是通過創(chuàng)建和修改其對應(yīng)的XML格式文件的方式實(shí)現(xiàn)對文檔格式控制的自動(dòng)化處理。
技術(shù)實(shí)現(xiàn)要素:
為克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提出一種基于OpenXML的docx文檔創(chuàng)建和修改方法。
本發(fā)明所采用的技術(shù)方案是:通過對組成docx文檔的XML文件的創(chuàng)建和標(biāo)簽修改實(shí)現(xiàn)對docx文檔的創(chuàng)建和格式修改。
本發(fā)明將處理過程設(shè)計(jì)成如下四個(gè)步驟:文檔及格式讀取步驟,所需格式生成步驟,格式修改步驟和新文檔創(chuàng)建步驟。
如圖1是對程序中整個(gè)流程的圖表化的展示,是從用戶對格式需求的輸入到格式規(guī)整的docx文檔的輸出的整個(gè)程序運(yùn)行過程的表示。下面將對每個(gè)步驟進(jìn)行簡單的說明。
文檔及格式讀取步驟:本方法需要用戶首先輸入最終欲生成docx文檔的格式,如果用戶沒有輸入對應(yīng)格式的需求,則本方法會默認(rèn)為用戶產(chǎn)生一個(gè)模版。表1則是用戶需要在命令行中輸入的部分重要的格式信息。待用戶輸入完畢,還需要選擇生成全新的文檔還是修改已經(jīng)存在的docx文檔的格式,如果生成全新的文檔,則用戶還需要將文檔的文字單獨(dú)錄入;如果修改已經(jīng)存在的docx文檔的格式,則上傳原docx文檔即可。
所需格式生成步驟:根據(jù)用戶輸入的格式信息,本方法生成一份用于描述該格式的XML文件,其中用戶沒有定義的格式信息則按照默認(rèn)格式信息處理。如果用戶沒有提供格式不整齊的原docx文檔而需要生成新的文檔,則還需要單獨(dú)生成一些docx文檔特有的XML文件,例如控制不同文件關(guān)系的XML文件和表示作者版權(quán)等信息的XML文件等。
格式修改步驟:如果用戶提供了格式不整齊的docx文檔,則本方法需要將用戶輸入的格式與現(xiàn)有docx文檔中控制格式的word/document.xml文件進(jìn)行對比,如果用戶原來XML文件多添加了標(biāo)簽,則將其刪除;如果原來XML文件用錯(cuò)了標(biāo)簽,則將其修改;如果原來XML文件少了標(biāo)簽,則將其加上。
新文檔創(chuàng)建步驟:如果用戶沒有提供格式不整齊的docx文檔,則將格式修改步驟中生成的所有XML文件按照docx文檔的形式整合并且生成新的docx文檔,如果用戶提供了格式不整齊的docx文檔,則將格式修改步驟中生成的XML文件替換用戶提供的docx文檔中的對應(yīng)XML文件即可。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是大大提高了批量處理相同格式docx文檔的效率,節(jié)省了用戶大量的時(shí)間,同時(shí),與目前存在的使用COM組件處理docx文檔的方法比較,本發(fā)明使用了Java語言來處理,可以更加靈活方便的處理到每一個(gè)標(biāo)簽。
附圖說明
圖1為本方法處理過程流程圖。
圖2為示例文字生成的DOM樹。
圖3為格式修改步驟的流程圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明進(jìn)行進(jìn)一步說明。
1、文檔及格式讀取步驟
文檔及格式讀取步驟是本方法獲得用戶對文檔格式需求的步驟。在本步驟中,用戶通過命令行參數(shù)的輸入傳入文檔的格式參數(shù),例如標(biāo)題的格式,段落的格式,每個(gè)段落中文字的格式,頁眉頁腳的格式等等,相關(guān)命令參數(shù)參考表1。通過本步驟,本方法可以獲得用戶對格式的需求,如果相關(guān)格式?jīng)]有被用戶指定,本方法會默認(rèn)指定一種文檔格式。同時(shí)此步驟還會記錄用戶需要生成全新的docx文檔還是傳入格式不整齊的docx文檔進(jìn)行格式修改。
表1格式輸入命令及功能
2、所需格式生成步驟
所需格式生成步驟是生成XML文件的步驟。無論用戶需要生成全新的docx文檔還是傳入格式不整齊的docx文檔,都需要生成word/document.xml文件,這里使用的XML文件中的標(biāo)簽都是微軟公開可以使用的標(biāo)簽,例如<w:document></w:document>是word/document.xml文件的根元素,<w:body></w:body>是文檔的文檔體,<w:p></w:p>是一個(gè)新段落,<w:r></w:r>表示同一范圍內(nèi)分享相同的特性集,<w:t></w:t>定義了一個(gè)范圍的文本等等。
如果用戶需要生成全新的docx文檔,則本方法還會為用戶生成其他的XML文件,例如表示不同XML文件之間關(guān)聯(lián)的XML控制文件,以及顯示作者版權(quán)信息的XML文件。
3、格式修改步驟
格式修改步驟主要是在用戶輸入格式不整齊的docx文檔時(shí)會進(jìn)入的步驟。本步驟使用Java語言處理word/document.xml文件,因此有兩種選擇,SAX解析和DOM解析。
在SAX解析器裝載XML文件時(shí),它遍歷文件文檔并在其主機(jī)應(yīng)用程序中產(chǎn)生事件(經(jīng)由回調(diào)函數(shù)、指派函數(shù)或者任何可調(diào)用平臺完成這一功能)表示這一過程。SAX解析器在某些方面優(yōu)于DOM風(fēng)格解析器。SAX解析器的內(nèi)存使用量一般遠(yuǎn)低于DOM解析器使用量。DOM解析器在任何處理開始之前,必須把整棵樹放在內(nèi)存,所以DOM解析器的內(nèi)存使用量完全根據(jù)輸入資料的大小。相對來說,SAX解析器的內(nèi)存內(nèi)容,是只基于XML檔案的最大深度(XML樹的最大深度)和單一XML項(xiàng)目上XML屬性儲存的最大資料。這兩個(gè)總是比整棵析樹本身還小。
DOM(DocumentObjectModel)解析方法,即文檔對象模型,可以以一種獨(dú)立于平臺和語言的方式訪問和修改一個(gè)文檔的內(nèi)容和結(jié)構(gòu)。換句話說,這是表示和處理一個(gè)HTML或XML文檔的常用方法。DOM實(shí)際上是以面向?qū)ο蠓绞矫枋龅奈臋n模型。DOM定義了表示和修改文檔所需的對象、這些對象的行為和屬性以及這些對象之間的關(guān)系??梢园袲OM認(rèn)為是頁面上數(shù)據(jù)和結(jié)構(gòu)的一個(gè)樹形表示,不過頁面當(dāng)然可能并不是以這種樹的方式具體實(shí)現(xiàn)。
SAX最大的缺點(diǎn)是不允許對XML文件進(jìn)行隨機(jī)訪問,這對于頻繁修改標(biāo)簽的本方法來說,是非常不利的,而且一般的docx文檔不會特別的龐大,使用DOM方式明顯優(yōu)于SAX方式,因此本方法采用DOM解析方式來讀取XML文件。
圖2顯示的是一段最簡單的文字”HelloOpenXML”在DOM樹中的表示。
在用戶提供給本方法docx文檔后,程序會需要用戶輸入對于格式的要求,根據(jù)用戶的定制,將讀取到的XML文檔的文檔樹和標(biāo)準(zhǔn)DOM樹進(jìn)行對比,修改不標(biāo)準(zhǔn)的文檔樹。遇到缺失的格式標(biāo)簽進(jìn)行補(bǔ)全,遇到使用錯(cuò)誤的格式標(biāo)簽進(jìn)行修改,遇到使用冗余的標(biāo)簽進(jìn)行刪除,通過循環(huán)這些操作,完成對整個(gè)XML文檔的掃描和修改。圖3所示為格式修改步驟的流程圖。
4、新文檔創(chuàng)建步驟
如果用戶輸入了格式不整齊的docx文檔,則經(jīng)過格式修改模塊后,新的word/document.xml文件已經(jīng)完全符合用戶對于格式的需求。在新文檔創(chuàng)建步驟中,本方法將新的word/document.xml文件和其余的XML文件重新整合,并且壓縮生成新的zip文件。最后通過格式的轉(zhuǎn)換,生成新的docx文件返回給用戶。同時(shí)第一個(gè)步驟中還保留了用戶轉(zhuǎn)換前的文檔,將兩個(gè)文檔均返回給用戶,供用戶比較使用。如果用戶沒有輸入任何docx文檔,而是需要生成全新的docx文檔,則新文檔創(chuàng)建步驟中為用戶將第二步中生成的word/document.xml文件和其余組成docx文檔所必須的XML文件一起按照docx文檔的打包格式一起壓縮成全新的zip文件,并且將文件轉(zhuǎn)換成docx文檔返回給用戶。至此已經(jīng)完成了基于OpenXML的docx文檔創(chuàng)建和修改方法的所有過程。