尉寅瑋+吳雅軒
摘 要:通過對(duì)格式化文本生成工作的調(diào)研分析,針對(duì)文本格式化過程中存在的各種弊端,設(shè)計(jì)了一套基于B/S架構(gòu)的可復(fù)用格式打印文本自動(dòng)生成系統(tǒng),通過將格式信息與內(nèi)容信息的編寫進(jìn)行合理劃分,實(shí)現(xiàn)了格式化文本的自動(dòng)生成,從而提高了格式化文本的編寫速率,降低了因?yàn)楦袷絾栴}而導(dǎo)致的文本錯(cuò)誤。
關(guān)鍵詞關(guān)鍵詞:JACOB;Freemarker;自動(dòng)生成系統(tǒng);格式復(fù)用;JSPSmartUpload
DOIDOI:10.11907/rjdk.161882
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文
章編號(hào):1672-7800(2016)008-0086-03
0 引言
隨著信息化時(shí)代的到來,日常工作與生活中使用計(jì)算機(jī)進(jìn)行文本撰寫并打印的需求越來越多。而在不同場(chǎng)合下文本格式也有著不同的要求,尤其在學(xué)校、企業(yè)、政府部門等工作環(huán)境下,需要產(chǎn)生大量有嚴(yán)格格式要求的文本文件進(jìn)行導(dǎo)出打印。傳統(tǒng)模式下,不同部門給出文本格式要求或提供模板,由相應(yīng)填寫人員根據(jù)該要求或模板進(jìn)行內(nèi)容錄入,這樣重復(fù)而細(xì)致的工作使得填寫人員將大量的時(shí)間與精力集中于格式編輯與調(diào)整之中,甚至投入的時(shí)間與精力可能會(huì)超過文本內(nèi)容編寫本身。即使如此,仍然難以避免因格式問題造成的反復(fù)修改與重復(fù)打印,既降低了效率,也造成了資源浪費(fèi)。與此同時(shí),對(duì)于相同格式不同內(nèi)容的文本需要進(jìn)行多次重復(fù)的調(diào)整工作,使效率大大降低。為了解決以上問題,本文設(shè)計(jì)開發(fā)了一種基于可復(fù)用格式的打印文本自動(dòng)生成系統(tǒng)。
通過該系統(tǒng),可根據(jù)需求設(shè)置或?qū)敫袷侥0宀⒈4?,在使用過程中,內(nèi)容填寫人員只需將文本內(nèi)容輸入系統(tǒng),即可自動(dòng)生成格式化的文本文件,更為重要的是,可以將該格式信息在系統(tǒng)中進(jìn)行存儲(chǔ),實(shí)現(xiàn)復(fù)用。如此,不僅大大減少了工作量和出錯(cuò)率,使得編寫人員將主要精力集中于文本內(nèi)容,同時(shí)在某種程度上也避免了紙張浪費(fèi),節(jié)約了成本,實(shí)現(xiàn)了節(jié)能環(huán)保。
1 系統(tǒng)需求與流程分析
1.1 系統(tǒng)需求分析
系統(tǒng)設(shè)計(jì)的目的在于提高文本寫作效率并滿足格式化打印的實(shí)際需求,避免傳統(tǒng)文本編寫打印模式的弊端,使內(nèi)容填寫人員專心于文本內(nèi)容本身,而將耗時(shí)費(fèi)力易于出錯(cuò)的格式設(shè)置及調(diào)整工作交由系統(tǒng)完成。在提高效率的同時(shí),能夠更加準(zhǔn)確地按照指定格式文本進(jìn)行打印輸出,避免了因格式問題所造成重新打印的時(shí)間與金錢等不必要的開銷。尤其是可以將該格式文件保留在系統(tǒng)之中供批量文件打印以及重復(fù)使用,實(shí)現(xiàn)一次錄入,重復(fù)使用的可復(fù)用格式的文本自動(dòng)生成。因此,系統(tǒng)應(yīng)該具有設(shè)置文本格式、導(dǎo)入格式模板、保存格式信息、輸入文本內(nèi)容、生成格式化文件,以及導(dǎo)出打印生成文本功能。
1.2 業(yè)務(wù)流程分析
通過實(shí)際調(diào)研分析,確定本系統(tǒng)的基本流程如下:①選擇格式生成方式;②選擇手動(dòng)格式設(shè)置,通過系統(tǒng)提供向?qū)нM(jìn)行格式設(shè)置,如字體格式、段落格式、頁(yè)面格式、目錄格式設(shè)置等;③選擇導(dǎo)入格式設(shè)置,將已存在模板文件進(jìn)行導(dǎo)出,生成一個(gè)與該導(dǎo)入文件格式相同的格式設(shè)置文件;④將產(chǎn)生的格式信息進(jìn)行存儲(chǔ),用于后期批量生成文本以及格式復(fù)用;⑤輸入文本內(nèi)容;⑥將文本內(nèi)容導(dǎo)入至已設(shè)置好的模板中,產(chǎn)生最終導(dǎo)出文本;⑦將最終文本進(jìn)行導(dǎo)出打印。
2 系統(tǒng)總體設(shè)計(jì)
2.1 系統(tǒng)功能模塊劃分
本系統(tǒng)主要包括七大模塊:手動(dòng)格式設(shè)置模塊、導(dǎo)入格式模板模塊、存儲(chǔ)格式信息模塊、輸入文本內(nèi)容模塊、格式化文本生成模塊以及打印模塊,如圖1所示。
2.2 系統(tǒng)功能模塊介紹
(1)手動(dòng)格式設(shè)置模塊。該模塊中通過若干步驟,手動(dòng)設(shè)置并生成符合要求的格式。其設(shè)置內(nèi)容主要包括:段落格式設(shè)置模塊,主要對(duì)文檔中每個(gè)段落進(jìn)行設(shè)置,可以修改每個(gè)段落的對(duì)齊方式、首行縮進(jìn)、段前、段后、行距等一系列屬性設(shè)置;頁(yè)眉頁(yè)腳設(shè)置,可以對(duì)文檔進(jìn)行簡(jiǎn)單的頁(yè)眉頁(yè)腳的文字設(shè)置,添加頁(yè)腳信息,格式為1/n、2/n、3/n等;標(biāo)題格式設(shè)置,主要用來對(duì)文檔各級(jí)標(biāo)題的字體、大小、位置信息等進(jìn)行控制;頁(yè)面設(shè)置,主要對(duì)文檔頁(yè)面間距等信息進(jìn)行設(shè)置;生成目錄,主要對(duì)整篇文檔生成的目錄格式進(jìn)行設(shè)置。
(2)導(dǎo)入格式模板模塊。該模塊主要根據(jù)已有固定模板按需求填寫內(nèi)容,生成文檔后進(jìn)行處理。通過該模塊的使用,用戶可將格式文件上傳至系統(tǒng)中,系統(tǒng)對(duì)格式文件進(jìn)行分析,產(chǎn)生一個(gè)關(guān)于當(dāng)前文檔的格式信息,供后續(xù)操作使用。
(3)存儲(chǔ)格式信息模塊。該模塊的功能是將手動(dòng)設(shè)置的格式信息或者導(dǎo)入格式模板文件分析得到的格式信息進(jìn)行存儲(chǔ),置于系統(tǒng)之中,并進(jìn)行保存,供后續(xù)生成格式化文本使用,該模塊功能雖然單一,但卻是整個(gè)系統(tǒng)的關(guān)鍵所在,也是本系統(tǒng)的創(chuàng)新之處,該功能的加入,使得本系統(tǒng)具有了批量生成格式化文本功能,同時(shí)也使本系統(tǒng)中的格式信息可以被復(fù)用。
(4)輸入文本內(nèi)容模塊。在文本格式信息創(chuàng)建完成之后,通過該模塊對(duì)文本內(nèi)容信息進(jìn)行添加。在填寫內(nèi)容時(shí),需設(shè)置當(dāng)前添加內(nèi)容所屬類別,如題目、摘要或正文,為后期生成相應(yīng)格式做準(zhǔn)備。
(5)格式化文本生成模塊。該模塊為本系統(tǒng)的核心模塊,在該模塊中,系統(tǒng)將前面步驟中產(chǎn)生的格式信息與填寫的內(nèi)容信息相結(jié)合,產(chǎn)生符合特定格式規(guī)范的文本。此功能模塊中,文本不但可以使用新產(chǎn)生的格式信息,同樣也可以復(fù)用保存在系統(tǒng)已有模塊中,并且具有針對(duì)多個(gè)不同內(nèi)容文本進(jìn)行批量生成格式化文本的功能。
(6)導(dǎo)出與打印模塊。該模塊將已經(jīng)生成的格式化文本信息進(jìn)行導(dǎo)出、打印操作,并提供批量導(dǎo)出、打印等功能,以配合本系統(tǒng)的格式復(fù)用功能的使用。
3 系統(tǒng)關(guān)鍵模塊實(shí)現(xiàn)技術(shù)及原理
本系統(tǒng)旨在將打印文本中的格式信息與內(nèi)容信息分別進(jìn)行輸入,再通過格式化文本生成模塊將指定格式信息與生成內(nèi)容信息進(jìn)行合成,最終實(shí)現(xiàn)格式化信息的導(dǎo)出打印。因此,本系統(tǒng)中實(shí)現(xiàn)的核心在于格式信息的輸入。為了滿足不同需要,本系統(tǒng)使用兩種模式進(jìn)行格式信息輸入,分別對(duì)應(yīng)于系統(tǒng)中的手動(dòng)格式信息設(shè)置模塊以及導(dǎo)入格式模板模塊。本文主要對(duì)這兩個(gè)模塊中所用到的核心技術(shù),也即本系統(tǒng)實(shí)現(xiàn)的技術(shù)難點(diǎn)作進(jìn)一步介紹。為了描述方便,選擇以Word文檔為例進(jìn)行描述。
3.1 系統(tǒng)邏輯結(jié)構(gòu)
根據(jù)本系統(tǒng)需求,采用Bootstrap[1]進(jìn)行頁(yè)面樣式設(shè)計(jì),并結(jié)合jQuery與Ajax[2]技術(shù)進(jìn)行異步數(shù)據(jù)請(qǐng)求,服務(wù)器段使用Java Web技術(shù)進(jìn)行實(shí)現(xiàn),JSP頁(yè)面中使用JSTL標(biāo)簽,最后導(dǎo)出格式信息使用MySQL數(shù)據(jù)庫(kù),上傳模板存于服務(wù)器端。系統(tǒng)邏輯結(jié)構(gòu)如圖2所示,采用基于組件式開發(fā)的MVC(Model View Controller)設(shè)計(jì)模式[3],使得系統(tǒng)具有良好的架構(gòu),更加便于系統(tǒng)功能的擴(kuò)展與維護(hù)。
3.2 手動(dòng)格式設(shè)置模塊
在手動(dòng)格式設(shè)置模塊中,用戶根據(jù)需求在輸入內(nèi)容之前產(chǎn)生一個(gè)符合要求的格式信息,主要有頁(yè)面設(shè)置、段落設(shè)置、目錄設(shè)置以及頁(yè)眉頁(yè)腳設(shè)置。為了對(duì)Word文檔進(jìn)行格式設(shè)置,本系統(tǒng)使用JACOB加以實(shí)現(xiàn)。
Jacob[4]是Java.COM Bridge的縮寫,它在Java與微軟的COM組件之間構(gòu)建一座橋梁。通過Jacob原本的DLL的動(dòng)態(tài)鏈接庫(kù),并且使用JNI的方式實(shí)現(xiàn)了在Java平臺(tái)上對(duì)COM程序的調(diào)用[1],原理如圖3所示。
本系統(tǒng)通過對(duì)JACOB的使用來對(duì)Word文檔格式進(jìn)行操作,直接調(diào)用其方法并結(jié)合用戶輸入設(shè)置要求,產(chǎn)生相應(yīng)的格式信息。
3.3 導(dǎo)入格式模板模塊
在某些應(yīng)用情況下,用戶需要根據(jù)已有的模板文件來進(jìn)行內(nèi)容填寫,每次即使使用相同模板填寫內(nèi)容,也需要在模板上進(jìn)行重新修改,對(duì)于批量產(chǎn)生文件依次進(jìn)行輸入調(diào)整更是機(jī)械而低效的工作,但這種工作模式非常適合由計(jì)算機(jī)系統(tǒng)來代替人工進(jìn)行。因此,在本模塊中,用戶可預(yù)先導(dǎo)入一個(gè)已存在的格式模板文件,而將需要填入該模板文件中的內(nèi)容進(jìn)行自動(dòng)填寫,從而批量生成相同格式文件;同時(shí),這種模式可以將格式信息保留,再次使用時(shí)無需導(dǎo)入格式,直接進(jìn)行選擇即可生成指定格式的打印文本。
為實(shí)現(xiàn)將內(nèi)容導(dǎo)入格式模板,本系統(tǒng)使用了Freemarker[5]技術(shù)。FreeMarker是一款模板引擎,即一種基于模板和數(shù)據(jù),并用來生成輸出文本的通用工具。Freemarker是通過freemarker.template.Configuration對(duì)象對(duì)模板進(jìn)行加載,之后通過調(diào)用getTemplate方法獲得模板。在Configuration 中可以使用下述方法建立3種模板加載。
void setDirectoryForTemplateLoading(File dir);
void setServletContextForTemplateLoading(Object servletContext,String path);
void setClassForTemplateLoading(Classcl,String prefix)
模板加載完成后,獲得該指定模板的格式信息,待后續(xù)模塊中將內(nèi)容信息填入生成好的模板即可完成格式化文本的生成。
3.4 JspSmartUpload技術(shù)及原理
JspSmartUpload[6]組件是應(yīng)用JSP進(jìn)行B/S程序開發(fā)過程中經(jīng)常使用的上傳下載組件,它使用簡(jiǎn)單、方便。JspSmartUpload是一個(gè)可免費(fèi)使用的全功能的文件上傳下載組件,適于嵌入執(zhí)行上傳下載操作的JSP文件中。該組件有以下幾個(gè)特點(diǎn):①使用簡(jiǎn)單;②能全程控制上傳;③能對(duì)上傳的文件在大小、類型等方面進(jìn)行限制;④下載靈活。JspSmartUpload組件中主要包含了File、Files、Request和JspSmartUpload核心類。
(1)File類。該類不同于java.io.File類,在編寫程序時(shí)應(yīng)注意使用。File類用于保存單個(gè)上 傳文件的相關(guān)信息,如上傳文件的文件名、文件大小、文件數(shù)據(jù)等。
(2)Files類。該類存儲(chǔ)了所有上傳的文件,通過類中的方法可獲得上傳文件的數(shù)量和總長(zhǎng)度等信息。
(3)Request類。因?yàn)楫?dāng)Form表單用來實(shí)現(xiàn)文件上傳時(shí),通過JSP的內(nèi)置對(duì)象request的getParameter()方法無法獲取其它表單項(xiàng)的值。
(4)SmartUpload類。SmartUpload類用于實(shí)現(xiàn)文件的上傳與下載操作。
4 結(jié)語(yǔ)
本文實(shí)現(xiàn)的基于可復(fù)用格式的打印文本自動(dòng)生成系統(tǒng),將文本格式編輯調(diào)整與文本內(nèi)容編寫工作進(jìn)行劃分,使得文本內(nèi)容填寫人員能夠?qū)⒕杏趦?nèi)容編寫上,同時(shí)采用已存在的符合規(guī)定的格式信息來生成格式化信息,這樣做不但可以提高工作效率,同時(shí)也可以減少文本格式錯(cuò)誤造成的重復(fù)打印或者文本提交不成功等問題。該系統(tǒng)目前已經(jīng)應(yīng)用于天津理工大學(xué)中環(huán)信息學(xué)院的畢業(yè)設(shè)計(jì)管理系統(tǒng)中,以及自動(dòng)生成學(xué)生畢業(yè)設(shè)計(jì)過程中所使用到的各種表格或文本上,不僅提高了畢業(yè)設(shè)計(jì)效率,而且輔助解決了畢業(yè)設(shè)計(jì)跟蹤監(jiān)控難題,極大方便了參與畢業(yè)設(shè)計(jì)的各類用戶。
參考文獻(xiàn):
[1]徐濤.深入理解Bootstrap[M].北京:機(jī)械工業(yè)出版社,2014.
[2]何麗,龔?fù)?jQuery在AJAX技術(shù)框架中頁(yè)面加載的應(yīng)用[J].計(jì)算機(jī)時(shí)代,2011(8):25-26.
[3]ROD JOHNSON.J2EE設(shè)計(jì)開發(fā)編程指南[M].魏海萍,于曉菲,毛選,譯.北京:電子工業(yè)出版社,2003.
[4][美]??藸?Java編程思想[M].北京:機(jī)械工業(yè)出版社,2007.
[5]高慧.C/S到B/S模式轉(zhuǎn)換的技術(shù)研究[M].青島:中國(guó)海洋大學(xué)出版社,2009.
[6]LUSHENGDI.JspSmartUpload上傳下載全攻略[EB/OL].http://www.blogjava.Net/lushengdi/archive/2013/01/05/393838.html.
(責(zé)任編輯:孫 娟)