本發(fā)明涉及業(yè)務(wù)數(shù)據(jù)導(dǎo)出領(lǐng)域,特別涉及一種實(shí)現(xiàn)以pdf格式快速導(dǎo)出業(yè)務(wù)數(shù)據(jù)的方法及系統(tǒng)。
背景技術(shù):
現(xiàn)在的工作環(huán)境中,需要交流、歸檔留存的電子文檔一般多使用pdf格式,主要是由于pdf不容易被篡改,因此很多正式場(chǎng)合格式要求都要求pdf。比如很多商務(wù)交流材料、銷售人員與用戶談妥的協(xié)議和簽字蓋章的文件打印等,一般多是pdf格式。一般企業(yè)的crm系統(tǒng),特別是合同系統(tǒng)也會(huì)特別要求文檔導(dǎo)出是pdf格式。通常使用java方式實(shí)現(xiàn)pdf文件導(dǎo)出和下載的功能,但一般邏輯比較復(fù)雜,并且學(xué)習(xí)的成本也比較高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種實(shí)現(xiàn)以pdf格式快速導(dǎo)出業(yè)務(wù)數(shù)據(jù)的方法及系統(tǒng),目的在于通過提供定義好的pdf模板類,使開發(fā)人員只要關(guān)注業(yè)務(wù)數(shù)據(jù),完全不用關(guān)心pdf生成過程,便捷的完成業(yè)務(wù)數(shù)據(jù)以pdf格式快速導(dǎo)出的開發(fā)任務(wù),提高開發(fā)效率,加快項(xiàng)目進(jìn)度。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:
一種實(shí)現(xiàn)以pdf格式快速導(dǎo)出業(yè)務(wù)數(shù)據(jù)的方法,包括以下步驟:
s1,根據(jù)用戶的查詢條件向服務(wù)器端發(fā)送獲取業(yè)務(wù)數(shù)據(jù)的請(qǐng)求;
s2,服務(wù)器端接收所述獲取業(yè)務(wù)數(shù)據(jù)的請(qǐng)求,并根據(jù)請(qǐng)求中的查詢條件獲取所需的業(yè)務(wù)數(shù)據(jù),調(diào)用預(yù)設(shè)的pdf模版類從預(yù)設(shè)的pdf模版庫(kù)中選擇所需的pdf模版,所述pdf模版包含與所述獲取到的業(yè)務(wù)數(shù)據(jù)相對(duì)應(yīng)的模版組件;
s3,初始化所述pdf模版,加載所述pdf模版中的模版組件,并解析所述業(yè)務(wù)數(shù)據(jù)得到與所述模板組件分別對(duì)應(yīng)的信息數(shù)據(jù),將所述分別對(duì)應(yīng)的信息數(shù)據(jù)填充到對(duì)應(yīng)的模版組件后將pdf模板生成pdf文件進(jìn)行展示。
本發(fā)明的有益效果是:通過提供定義好的pdf模板類,使開發(fā)人員只要關(guān)注業(yè)務(wù)數(shù)據(jù),完全不用關(guān)心pdf生成過程,便捷的完成業(yè)務(wù)數(shù)據(jù)以pdf格式快速導(dǎo)出的開發(fā)任務(wù),提高開發(fā)效率,加快項(xiàng)目進(jìn)度。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn):
進(jìn)一步,所述s2中所述選擇所需的pdf模版的過程為:根據(jù)所述獲取到的業(yè)務(wù)數(shù)據(jù)中的所有數(shù)據(jù)流類型,從預(yù)設(shè)的pdf模版庫(kù)中選擇出包含與各數(shù)據(jù)流類型相對(duì)應(yīng)的模版組件的pdf模版。
采用上述進(jìn)一步方案的有益效果是:被選擇出的pdf模版能滿足業(yè)務(wù)數(shù)據(jù)的各種數(shù)據(jù)流展示,根據(jù)實(shí)際應(yīng)用情況展示業(yè)務(wù)數(shù)據(jù),實(shí)用性高,適用的業(yè)務(wù)范圍廣。
進(jìn)一步,所述s2中所述模版組件包括:
基本格式定義組件,用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)定義pdf模版的基本格式,所述基本格式包括頁(yè)眉、頁(yè)腳、表格格式、字體格式和總頁(yè)數(shù);
初始化設(shè)置組件,用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)初始化設(shè)置pdf模版的基本格式;
文檔布局組件,用于將所述s3中解析業(yè)務(wù)數(shù)據(jù)后獲得的信息數(shù)據(jù)中的文檔內(nèi)容根據(jù)文檔內(nèi)容的數(shù)據(jù)量使用功能塊或功能段落實(shí)現(xiàn)以pdf格式展示。
采用上述進(jìn)一步方案的有益效果是:通過細(xì)分的模版組件來精確匹配業(yè)務(wù)數(shù)據(jù)中的各種數(shù)據(jù)流類型,展示效果好,滿足各種業(yè)務(wù)數(shù)據(jù)的規(guī)范快速展示的需求。
進(jìn)一步,所述s2中所述模版組件還包括水印組件,用于在所述生成的pdf文件中添加預(yù)設(shè)的水印信息。
采用上述進(jìn)一步方案的有益效果是:可以給導(dǎo)出的pdf文檔中添加水印信息,有助于滿足宣傳和保護(hù)版權(quán)的作用。
進(jìn)一步,所述s2中所述所需的pdf模版為多個(gè),每個(gè)pdf模版包括一個(gè)以上模版組件;
所述s3中還包括:將所述分別對(duì)應(yīng)的信息數(shù)據(jù)填充到對(duì)應(yīng)的模版組件后,調(diào)用預(yù)設(shè)的合并pdf類將填充信息數(shù)據(jù)后的多個(gè)pdf模版合并生成pdf文件進(jìn)行展示。
采用上述進(jìn)一步方案的有益效果是:所有pdf文檔組成部分都可以復(fù)用單獨(dú)的模板組件部分功能,開發(fā)時(shí),只要了解各個(gè)組件部分的功能以及實(shí)現(xiàn)的模板,完成模板功能的組裝,可以快速構(gòu)建自己的業(yè)務(wù)功能實(shí)現(xiàn)。
為了解決上述技術(shù)問題,本發(fā)明還提出了一種實(shí)現(xiàn)以pdf格式快速導(dǎo)出業(yè)務(wù)數(shù)據(jù)的系統(tǒng),包括以下模塊:
用戶交互模塊,用于根據(jù)用戶的查詢條件向模版獲取模塊發(fā)送獲取業(yè)務(wù)數(shù)據(jù)的請(qǐng)求;
模版獲取模塊,用于接收所述獲取業(yè)務(wù)數(shù)據(jù)的請(qǐng)求,并根據(jù)請(qǐng)求中的查詢條件獲取所需的業(yè)務(wù)數(shù)據(jù),調(diào)用預(yù)設(shè)的pdf模版類從預(yù)設(shè)的pdf模版庫(kù)中選擇所需的pdf模版,所述pdf模版包含與所述獲取到的業(yè)務(wù)數(shù)據(jù)相對(duì)應(yīng)的模版組件;
pdf生成模塊,用于初始化所述pdf模版,加載所述pdf模版中的模版組件,并解析所述業(yè)務(wù)數(shù)據(jù)得到與所述模板組件分別對(duì)應(yīng)的信息數(shù)據(jù),將所述分別對(duì)應(yīng)的信息數(shù)據(jù)填充到對(duì)應(yīng)的模版組件后將pdf模版生成pdf文件并發(fā)送給用戶交互模塊進(jìn)行展示。
本發(fā)明的有益效果是:通過提供定義好的pdf模板類,使開發(fā)人員只要關(guān)注業(yè)務(wù)數(shù)據(jù),完全不用關(guān)心pdf生成過程,便捷的完成業(yè)務(wù)數(shù)據(jù)以pdf格式快速導(dǎo)出的開發(fā)任務(wù),提高開發(fā)效率,加快項(xiàng)目進(jìn)度。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn):
進(jìn)一步,所述模版獲取模塊還用于根據(jù)所述獲取到的業(yè)務(wù)數(shù)據(jù)中的所有數(shù)據(jù)流類型,從預(yù)設(shè)的pdf模版庫(kù)中選擇出包含與各數(shù)據(jù)流類型相對(duì)應(yīng)的模版組件的pdf模版。
采用上述進(jìn)一步方案的有益效果是:被選擇出的pdf模版能滿足業(yè)務(wù)數(shù)據(jù)的各種數(shù)據(jù)流展示,根據(jù)實(shí)際應(yīng)用情況展示業(yè)務(wù)數(shù)據(jù),實(shí)用性高,適用的業(yè)務(wù)范圍廣。
進(jìn)一步,所述模版獲取模塊中所述模版組件包括:
基本格式定義組件,用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)定義pdf模版的基本格式,所述基本格式包括頁(yè)眉、頁(yè)腳、表格格式、字體格式和總頁(yè)數(shù);
初始化設(shè)置組件,用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)初始化設(shè)置pdf模版的基本格式;
文檔布局組件,用于將所述pdf生成模塊中解析業(yè)務(wù)數(shù)據(jù)后獲得的信息數(shù)據(jù)中的文檔內(nèi)容根據(jù)文檔內(nèi)容的數(shù)據(jù)量使用功能塊或功能段落實(shí)現(xiàn)以pdf格式展示。
采用上述進(jìn)一步方案的有益效果是:通過細(xì)分的模版組件來精確匹配業(yè)務(wù)數(shù)據(jù)中的各種數(shù)據(jù)流類型,展示效果好,滿足各種業(yè)務(wù)數(shù)據(jù)的規(guī)范快速展示的需求。
進(jìn)一步,所述模版獲取模塊中所述模版組件還包括水印組件,用于在所述生成的pdf文件中添加預(yù)設(shè)的水印信息。
采用上述進(jìn)一步方案的有益效果是:可以給導(dǎo)出的pdf文檔中添加水印信息,有助于滿足宣傳和保護(hù)版權(quán)的作用。
進(jìn)一步,所述模版獲取模塊中所述所需的pdf模版為多個(gè),每個(gè)pdf模版包括一個(gè)以上模版組件;
所述pdf生成模塊還用于將所述分別對(duì)應(yīng)的信息數(shù)據(jù)填充到對(duì)應(yīng)的模版組件后,調(diào)用預(yù)設(shè)的合并pdf類將填充信息數(shù)據(jù)后的多個(gè)pdf模版合并生成pdf文件并發(fā)送給用戶交互模塊進(jìn)行展示。
采用上述進(jìn)一步方案的有益效果是:所有pdf文檔組成部分都可以復(fù)用單獨(dú)的模板組件部分功能,開發(fā)時(shí),只要了解各個(gè)組件部分的功能以及實(shí)現(xiàn)的模板,完成模板功能的組裝,可以快速構(gòu)建自己的業(yè)務(wù)功能實(shí)現(xiàn)。
附圖說明
圖1為本發(fā)明實(shí)施例1中一種實(shí)現(xiàn)以pdf格式快速導(dǎo)出業(yè)務(wù)數(shù)據(jù)的方法的流程圖;
圖2為本發(fā)明實(shí)施例2中一種實(shí)現(xiàn)以pdf格式快速導(dǎo)出業(yè)務(wù)數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
實(shí)施例1
如圖1所示,一種實(shí)現(xiàn)以pdf格式快速導(dǎo)出業(yè)務(wù)數(shù)據(jù)的方法,包括以下步驟:
s1,根據(jù)用戶的查詢條件向服務(wù)器端發(fā)送獲取業(yè)務(wù)數(shù)據(jù)的請(qǐng)求;
s2,服務(wù)器端接收所述獲取業(yè)務(wù)數(shù)據(jù)的請(qǐng)求,并根據(jù)請(qǐng)求中的查詢條件獲取所需的業(yè)務(wù)數(shù)據(jù),調(diào)用預(yù)設(shè)的pdf模版類從預(yù)設(shè)的pdf模版庫(kù)中選擇所需的pdf模版,所述pdf模版包含與所述獲取到的業(yè)務(wù)數(shù)據(jù)相對(duì)應(yīng)的模版組件;
s3,初始化所述pdf模版,加載所述pdf模版中的模版組件,并解析所述業(yè)務(wù)數(shù)據(jù)得到與所述模板組件分別對(duì)應(yīng)的信息數(shù)據(jù),將所述分別對(duì)應(yīng)的信息數(shù)據(jù)填充到對(duì)應(yīng)的模版組件后將pdf模版生成pdf文件進(jìn)行展示。
具體的,本發(fā)明可以采用itext包(itext是java中用于創(chuàng)建和操作pdf文件的開源庫(kù))來完成pdf文件的生成和導(dǎo)出,框架采用:spring4(spring是一個(gè)開源框架,spring是于2003年興起的一個(gè)輕量級(jí)的java開發(fā)框架)+springmvc(spring框架提供的構(gòu)建web應(yīng)用程序的全功能mvc模塊)+mybatis3(一種開源框架)+tomcat7(目前比較流行的web應(yīng)用服務(wù)器)。前端與用戶的交互可以使用css(層疊樣式表,英文全稱:cascadingstylesheets,是一種用來表現(xiàn)html或xml(標(biāo)準(zhǔn)通用標(biāo)記語言的一個(gè)子集)等文件樣式的計(jì)算機(jī)語言)+js(即javascript,一種直譯式腳本語言)+html(標(biāo)準(zhǔn)通用標(biāo)記語言的一個(gè)應(yīng)用)實(shí)現(xiàn)界面展示,并支持實(shí)現(xiàn)前臺(tái)導(dǎo)出和下載打印等使用場(chǎng)景,若不需要在前臺(tái)展示,也可以只保存文件到主機(jī)。
在上述架構(gòu)下,用戶使用查詢條件向服務(wù)器發(fā)送請(qǐng)求,請(qǐng)求被spring前端控制servelt(是用java編寫的服務(wù)器端程序)中的dispatcherservlet(一種前置控制器)捕獲;dispatcherservlet對(duì)請(qǐng)求中的url(統(tǒng)一資源定位符)進(jìn)行解析,得到請(qǐng)求資源標(biāo)識(shí)符(uri),然后根據(jù)該uri,調(diào)用handlermapping(處理器映射)獲得該handler(一種消息處理器)配置的對(duì)象;提取request(一種獲取請(qǐng)求信息的對(duì)象)中的模型數(shù)據(jù),填充handler入?yún)?,開始執(zhí)行handler;controller(在springmvc中,是一種負(fù)責(zé)處理由dispatcherservlet分發(fā)的請(qǐng)求的控制器)在handler完成業(yè)務(wù)邏輯的處理后將返回一個(gè)modelandview(一種包含視圖名稱或視圖對(duì)象以及一些模型屬性的對(duì)象)給dispatcherservlet,得到返回的響應(yīng)pdf文檔,可以打開或者保存。
簡(jiǎn)要流程為:獲取查詢請(qǐng)求,前端控制dispatcherservlet捕獲,對(duì)請(qǐng)求中url進(jìn)行解析,獲得handler,選擇一個(gè)合適的handleradapter,提取request中的模型數(shù)據(jù),填充handler入?yún)?,開始執(zhí)行handler,通過service層(服務(wù)層),調(diào)用dao層(dao層是數(shù)據(jù)訪問層,用來訪問數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)的持久化)接口,查詢數(shù)據(jù)庫(kù),返回業(yè)務(wù)數(shù)據(jù),通過模板類或自定義模板類(在本發(fā)明中即表示s2中所述pdf模版類)處理業(yè)務(wù)數(shù)據(jù),生成pdf文檔,向dispatcherservlet返回一個(gè)modelandview對(duì)象;dispatcherservlet將渲染結(jié)果返回給用戶。
上述過程使用的jar包有:itextpdf.jar(用于核心類處理)和itext-asian.jar(用于中文處理),其中應(yīng)用框架使用jar(是一種軟件包文件格式),根據(jù)項(xiàng)目集成選擇對(duì)應(yīng)版本。
pdf模版類可以根據(jù)業(yè)務(wù)數(shù)據(jù)類型自主定義,進(jìn)而得到pdf模板庫(kù)。
itext包實(shí)現(xiàn)了pdf文件初始化的工作,同時(shí)頁(yè)面大小、頁(yè)尾頁(yè)腳都可以在初始化時(shí)默認(rèn),減少開發(fā)人員工作;開發(fā)人員只要關(guān)注具體的業(yè)務(wù)數(shù)據(jù)以及需要的展示格式,常用的場(chǎng)景是格式固定,業(yè)務(wù)數(shù)據(jù)不同;大部分的工作都可以復(fù)用模板,開發(fā)人員只要傳入業(yè)務(wù)數(shù)據(jù),通過模板展示即可。
以銷售人員與用戶談妥的協(xié)議文件場(chǎng)景為例:這類文件比較適合使用模板形式,如甲乙雙方的企業(yè)信息,需要遵循的法律條款以及達(dá)成的協(xié)議,各自的權(quán)利以及義務(wù),出現(xiàn)爭(zhēng)執(zhí)時(shí)的解決方案等。前臺(tái)根據(jù)模板錄入信息,保存。pdf模板類接收前臺(tái)通過查詢條件查到需要導(dǎo)出的協(xié)議文件數(shù)據(jù)流,將業(yè)務(wù)數(shù)據(jù)進(jìn)行處理后即完成數(shù)據(jù)的渲染工作,生成pdf文件,展示給用戶,同時(shí),可以在主機(jī)上也保存一份。pdf模板類是功能處理的核心部分。
本發(fā)明通過提供定義好的pdf模板類,使開發(fā)人員只要關(guān)注業(yè)務(wù)數(shù)據(jù),完全不用關(guān)心pdf生成過程,便捷的完成業(yè)務(wù)數(shù)據(jù)以pdf格式快速導(dǎo)出的開發(fā)任務(wù),提高開發(fā)效率,加快項(xiàng)目進(jìn)度。
進(jìn)一步,所述s2中所述選擇所需的pdf模版的過程為:根據(jù)所述獲取到的業(yè)務(wù)數(shù)據(jù)中的所有數(shù)據(jù)流類型,從預(yù)設(shè)的pdf模版庫(kù)中選擇出包含與各數(shù)據(jù)流類型相對(duì)應(yīng)的模版組件的pdf模版。
具體的,根據(jù)業(yè)務(wù)數(shù)據(jù)中的數(shù)據(jù)流類型選擇pdf模版,使被選擇的pdf模版中包含有業(yè)務(wù)數(shù)據(jù)所需要的各種元素。
該改進(jìn)中,被選擇出的pdf模版能滿足業(yè)務(wù)數(shù)據(jù)的各種數(shù)據(jù)流展示,根據(jù)實(shí)際應(yīng)用情況展示業(yè)務(wù)數(shù)據(jù),實(shí)用性高,適用的業(yè)務(wù)范圍廣。
進(jìn)一步,所述s2中所述模版組件包括:
基本格式定義組件,用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)定義pdf模版的基本格式,所述基本格式包括頁(yè)眉、頁(yè)腳、表格格式、字體格式和總頁(yè)數(shù);
初始化設(shè)置組件,用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)初始化設(shè)置pdf模版的基本格式;
文檔布局組件,用于將解析業(yè)務(wù)數(shù)據(jù)后獲得的信息數(shù)據(jù)中的文檔內(nèi)容根據(jù)文檔內(nèi)容的數(shù)據(jù)量使用功能塊或功能段落實(shí)現(xiàn)以pdf格式展示。
具體的,基本格式組件可以完成定義數(shù)據(jù)表列數(shù)、設(shè)置表格、定義表格寬度、定義表格寬度百分比、設(shè)置表格的底色和對(duì)齊方式、設(shè)置表頭元素、設(shè)置字體和字體格式、定義頁(yè)面大小、增加頁(yè)眉頁(yè)腳和設(shè)置總頁(yè)數(shù)等各種功能。
初始化設(shè)置組件可以實(shí)例化模版信息,可以完成在打開文檔時(shí),創(chuàng)建一個(gè)預(yù)設(shè)的總頁(yè)數(shù)的模版、設(shè)置頁(yè)腳下中的頁(yè)碼、一頁(yè)加載完成后觸發(fā)寫入頁(yè)眉和頁(yè)腳、設(shè)置頁(yè)眉坐上的圖片和右上的名稱、指定圖片的位置、設(shè)置總頁(yè)數(shù)、將頁(yè)眉寫到文檔中并指定位置等實(shí)例化功能。
文檔布局組件中,通常少量信息是通過功能塊(chunk)來顯示,比如甲方名稱、甲方地址、郵政編碼和設(shè)置下劃線等功能。一個(gè)頁(yè)面有多個(gè)功能塊的時(shí)候,可以實(shí)現(xiàn)精細(xì)化控制,每個(gè)小模塊可以單獨(dú)處理,完成版面編排。大篇幅的內(nèi)容通過功能段(paragraph)來控制,如雙方約定的篇幅較大的內(nèi)容。
該改進(jìn)中,通過細(xì)分的模版組件來精確匹配業(yè)務(wù)數(shù)據(jù)中的各種數(shù)據(jù)流類型,展示效果好,滿足各種業(yè)務(wù)數(shù)據(jù)的規(guī)范快速展示的需求。
進(jìn)一步,所述s2中所述模版組件還包括水印組件,用于在所述生成的pdf文件中添加預(yù)設(shè)的水印信息。
具體的,例如addwatermark類實(shí)現(xiàn)了水印功能,可以設(shè)置為文字、圖片、旋轉(zhuǎn)角度等,通過坐標(biāo)設(shè)置顯示位置。水印可以是企業(yè)logo,特效文字,個(gè)性化圖片輔助功能美化文件。addwatermark類主要通過公用方法pdfreader和pdfstamper完成對(duì)水印功能的實(shí)現(xiàn)。
上述所有模版組件中的元素多可以固化,所有元素信息也都是可復(fù)用的。
該改進(jìn)中,可以給導(dǎo)出的pdf文檔中添加水印信息,有助于滿足宣傳和保護(hù)版權(quán)的作用。
進(jìn)一步,所述s2中所述所需的pdf模版為多個(gè),每個(gè)pdf模版包括一個(gè)以上模版組件;
所述s3中還包括:將所述分別對(duì)應(yīng)的信息數(shù)據(jù)填充到對(duì)應(yīng)的模版組件后,調(diào)用預(yù)設(shè)的合并pdf類將填充信息數(shù)據(jù)后的多個(gè)pdf模版合并生成pdf文件進(jìn)行展示。
具體的,為了增加通用性,所有模版組件包含的功能都可單獨(dú)在一個(gè)pdf模板里實(shí)現(xiàn),可以通過對(duì)模板的合并實(shí)現(xiàn)復(fù)用;合并是通過copypdf類實(shí)現(xiàn),如copypdf(pdffile1,pdffile3,pdffile4,pdffile2)(按照順序合并),即展示時(shí)將每個(gè)文件順序連接為一個(gè)文件。copypdf類是通過公共方法pdfcopy和pdfreader實(shí)現(xiàn)的。pdfcopy只能實(shí)現(xiàn)文件的合并,不能實(shí)現(xiàn)內(nèi)容的合并,即每頁(yè)的內(nèi)容還是保持不變。
該改進(jìn)中,所有pdf文檔組成部分都可以復(fù)用單獨(dú)的模板組件部分功能,開發(fā)時(shí),只要了解各個(gè)組件部分的功能以及實(shí)現(xiàn)的模板,完成模板功能的組裝,可以快速構(gòu)建自己的業(yè)務(wù)功能實(shí)現(xiàn)。
生成的pdf文件可以響應(yīng)前臺(tái)請(qǐng)求,被下載,打印,應(yīng)用,同時(shí)pdf文件被文件服務(wù)器統(tǒng)一管理。主機(jī)上的pdf文檔還可以通過對(duì)外提供webservice(一種可以接收從網(wǎng)絡(luò)上的其它系統(tǒng)中傳遞過來的請(qǐng)求,輕量級(jí)的獨(dú)立的通訊技術(shù))等協(xié)議報(bào)文,生成pdf文檔遠(yuǎn)程傳輸。主機(jī)上的pdf文檔可以按照規(guī)則通過crontab(crontab命令常見于unix和類unix的操作系統(tǒng)之中,用于設(shè)置周期性被執(zhí)行的指令)清理和備份pdf文檔。
實(shí)施例2
如圖2所示,一種實(shí)現(xiàn)以pdf格式快速導(dǎo)出業(yè)務(wù)數(shù)據(jù)的系統(tǒng),包括以下模塊:
用戶交互模塊,用于根據(jù)用戶的查詢條件向模版獲取模塊發(fā)送獲取業(yè)務(wù)數(shù)據(jù)的請(qǐng)求,并以展示界面的形式將pdf文件展示給用戶;
模版獲取模塊,用于接收所述獲取業(yè)務(wù)數(shù)據(jù)的請(qǐng)求,并根據(jù)請(qǐng)求中的查詢條件獲取所需的業(yè)務(wù)數(shù)據(jù),調(diào)用預(yù)設(shè)的pdf模版類從預(yù)設(shè)的pdf模版庫(kù)中選擇所需的pdf模版,所述pdf模版包含與所述獲取到的業(yè)務(wù)數(shù)據(jù)相對(duì)應(yīng)的模版組件;
pdf生成模塊,用于初始化所述pdf模版,加載所述pdf模版中的模版組件,并解析所述業(yè)務(wù)數(shù)據(jù)得到與所述模板組件分別對(duì)應(yīng)的信息數(shù)據(jù),將所述分別對(duì)應(yīng)的信息數(shù)據(jù)填充到對(duì)應(yīng)的模版組件后將pdf模版生成pdf文件并發(fā)送給用戶交互模塊進(jìn)行展示。
本發(fā)明可以采用itext包(itext是java中用于創(chuàng)建和操作pdf文件的開源庫(kù))來完成pdf文件的生成和導(dǎo)出,框架采用:spring4(spring是一個(gè)開源框架,spring是于2003年興起的一個(gè)輕量級(jí)的java開發(fā)框架)+springmvc(spring框架提供的構(gòu)建web應(yīng)用程序的全功能mvc模塊)+mybatis3(一種開源框架)+tomcat7(目前比較流行的web應(yīng)用服務(wù)器)。前端與用戶的交互可以使用css(層疊樣式表,英文全稱:cascadingstylesheets,是一種用來表現(xiàn)html或xml(標(biāo)準(zhǔn)通用標(biāo)記語言的一個(gè)子集)等文件樣式的計(jì)算機(jī)語言)+js(即javascript,一種直譯式腳本語言)+html(標(biāo)準(zhǔn)通用標(biāo)記語言的一個(gè)應(yīng)用)實(shí)現(xiàn)界面展示,并支持實(shí)現(xiàn)前臺(tái)導(dǎo)出和下載打印等使用場(chǎng)景,若不需要在前臺(tái)展示,也可以只保存文件到主機(jī)。
在上述架構(gòu)下,用戶使用查詢條件向服務(wù)器發(fā)送請(qǐng)求,請(qǐng)求被spring前端控制servelt(是用java編寫的服務(wù)器端程序)中的dispatcherservlet(一種前置控制器)捕獲;dispatcherservlet對(duì)請(qǐng)求中的url(統(tǒng)一資源定位符)進(jìn)行解析,得到請(qǐng)求資源標(biāo)識(shí)符(uri),然后根據(jù)該uri,調(diào)用handlermapping(處理器映射)獲得該handler(一種消息處理器)配置的對(duì)象;提取request(一種獲取請(qǐng)求信息的對(duì)象)中的模型數(shù)據(jù),填充handler入?yún)ⅲ_始執(zhí)行handler;controller(在springmvc中,是一種負(fù)責(zé)處理由dispatcherservlet分發(fā)的請(qǐng)求的控制器)在handler完成業(yè)務(wù)邏輯的處理后將返回一個(gè)modelandview(一種包含視圖名稱或視圖對(duì)象以及一些模型屬性的對(duì)象)給dispatcherservlet,得到返回的響應(yīng)pdf文檔,可以打開或者保存。
系統(tǒng)的簡(jiǎn)要運(yùn)行流程為:用戶交互模塊獲取查詢請(qǐng)求,模版獲取模塊控制dispatcherservlet捕獲,對(duì)請(qǐng)求中url進(jìn)行解析,獲得handler,選擇一個(gè)合適的handleradapter,pdf生成模塊提取request中的模型數(shù)據(jù),填充handler入?yún)?,開始執(zhí)行handler,通過service層(服務(wù)層),調(diào)用dao層(dao層是數(shù)據(jù)訪問層,用來訪問數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)的持久化)接口,查詢數(shù)據(jù)庫(kù),返回業(yè)務(wù)數(shù)據(jù),通過模板類或自定義模板類(模版獲取模塊中所述pdf模版類)處理業(yè)務(wù)數(shù)據(jù),生成pdf文檔,向dispatcherservlet返回一個(gè)modelandview對(duì)象;dispatcherservlet將渲染結(jié)果返回給用戶交互模塊。
上述過程使用的jar包有:itextpdf.jar(用于核心類處理)和itext-asian.jar(用于中文處理),其中應(yīng)用框架使用jar(是一種軟件包文件格式),根據(jù)項(xiàng)目集成選擇對(duì)應(yīng)版本。
pdf模版類可以根據(jù)業(yè)務(wù)數(shù)據(jù)類型自主定義,進(jìn)而得到pdf模板庫(kù)。
itext包實(shí)現(xiàn)了pdf文件初始化的工作,同時(shí)頁(yè)面大小、頁(yè)尾頁(yè)腳都可以在初始化時(shí)默認(rèn),減少開發(fā)人員工作;開發(fā)人員只要關(guān)注具體的業(yè)務(wù)數(shù)據(jù)以及需要的展示格式,常用的場(chǎng)景是格式固定,業(yè)務(wù)數(shù)據(jù)不同;大部分的工作都可以復(fù)用模板,開發(fā)人員只要傳入業(yè)務(wù)數(shù)據(jù),通過模板展示即可。
以銷售人員與用戶談妥的協(xié)議文件場(chǎng)景為例:這類文件比較適合使用模板形式,如甲乙雙方的企業(yè)信息,需要遵循的法律條款以及達(dá)成的協(xié)議,各自的權(quán)利以及義務(wù),出現(xiàn)爭(zhēng)執(zhí)時(shí)的解決方案等。前臺(tái)根據(jù)模板錄入信息,保存。pdf模板類接收前臺(tái)通過查詢條件查到需要導(dǎo)出的協(xié)議文件數(shù)據(jù)流,將業(yè)務(wù)數(shù)據(jù)進(jìn)行處理后即完成數(shù)據(jù)的渲染工作,生成pdf文件,展示給用戶,同時(shí),可以在主機(jī)上也保存一份。pdf模板類是功能處理的核心部分。
本發(fā)明通過提供定義好的pdf模板類,使開發(fā)人員只要關(guān)注業(yè)務(wù)數(shù)據(jù),完全不用關(guān)心pdf生成過程,便捷的完成業(yè)務(wù)數(shù)據(jù)以pdf格式快速導(dǎo)出的開發(fā)任務(wù),提高開發(fā)效率,加快項(xiàng)目進(jìn)度。
進(jìn)一步,所述模版獲取模塊還用于根據(jù)所述獲取到的業(yè)務(wù)數(shù)據(jù)中的所有數(shù)據(jù)流類型,從預(yù)設(shè)的pdf模版庫(kù)中選擇出包含與各數(shù)據(jù)流類型相對(duì)應(yīng)的模版組件的pdf模版。
具體的,根據(jù)業(yè)務(wù)數(shù)據(jù)中的數(shù)據(jù)流類型選擇pdf模版,使被選擇的pdf模版中包含有業(yè)務(wù)數(shù)據(jù)所需要的各種元素。
該改進(jìn)中,被選擇出的pdf模版能滿足業(yè)務(wù)數(shù)據(jù)的各種數(shù)據(jù)流展示,根據(jù)實(shí)際應(yīng)用情況展示業(yè)務(wù)數(shù)據(jù),實(shí)用性高,適用的業(yè)務(wù)范圍廣。
進(jìn)一步,所述s2中所述模版組件包括:
基本格式定義組件,用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)定義pdf模版的基本格式,所述基本格式包括頁(yè)眉、頁(yè)腳、表格格式、字體格式和總頁(yè)數(shù);
初始化設(shè)置組件,用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)初始化設(shè)置pdf模版的基本格式;
文檔布局組件,用于將解析業(yè)務(wù)數(shù)據(jù)后獲得的信息數(shù)據(jù)中的文檔內(nèi)容根據(jù)文檔內(nèi)容的數(shù)據(jù)量使用功能塊或功能段落實(shí)現(xiàn)以pdf格式展示。
具體的,基本格式組件可以完成定義數(shù)據(jù)表列數(shù)、設(shè)置表格、定義表格寬度、定義表格寬度百分比、設(shè)置表格的底色和對(duì)齊方式、設(shè)置表頭元素、設(shè)置字體和字體格式、定義頁(yè)面大小、增加頁(yè)眉頁(yè)腳和設(shè)置總頁(yè)數(shù)等各種功能。
初始化設(shè)置組件可以實(shí)例化模版信息,可以完成在打開文檔時(shí),創(chuàng)建一個(gè)預(yù)設(shè)的總頁(yè)數(shù)的模版、設(shè)置頁(yè)腳下中的頁(yè)碼、一頁(yè)加載完成后觸發(fā)寫入頁(yè)眉和頁(yè)腳、設(shè)置頁(yè)眉坐上的圖片和右上的名稱、指定圖片的位置、設(shè)置總頁(yè)數(shù)、將頁(yè)眉寫到文檔中并指定位置等實(shí)例化功能。
文檔布局組件中,通常少量信息是通過功能塊(chunk)來顯示,比如甲方名稱、甲方地址、郵政編碼和設(shè)置下劃線等功能。一個(gè)頁(yè)面有多個(gè)功能塊的時(shí)候,可以實(shí)現(xiàn)精細(xì)化控制,每個(gè)小模塊可以單獨(dú)處理,完成版面編排。大篇幅的內(nèi)容通過功能段(paragraph)來控制,如雙方約定的篇幅較大的內(nèi)容。
該改進(jìn)中,通過細(xì)分的模版組件來精確匹配業(yè)務(wù)數(shù)據(jù)中的各種數(shù)據(jù)流類型,展示效果好,滿足各種業(yè)務(wù)數(shù)據(jù)的規(guī)范快速展示的需求。
進(jìn)一步,所述s2中所述模版組件還包括水印組件,用于在所述生成的pdf文件中添加預(yù)設(shè)的水印信息。
具體的,例如addwatermark類實(shí)現(xiàn)了水印功能,可以設(shè)置為文字、圖片、旋轉(zhuǎn)角度等,通過坐標(biāo)設(shè)置顯示位置。水印可以是企業(yè)logo,特效文字,個(gè)性化圖片輔助功能美化文件。addwatermark類主要通過公用方法pdfreader和pdfstamper完成對(duì)水印功能的實(shí)現(xiàn)。
上述所有模版組件中的元素多可以固化,所有元素信息也都是可復(fù)用的。
該改進(jìn)中,可以給導(dǎo)出的pdf文檔中添加水印信息,有助于滿足宣傳和保護(hù)版權(quán)的作用。
進(jìn)一步,所述模版獲取模塊中所述所需的pdf模版為多個(gè),每個(gè)pdf模版包括一個(gè)以上模版組件;
所述pdf生成模塊還用于將所述分別對(duì)應(yīng)的信息數(shù)據(jù)填充到對(duì)應(yīng)的模版組件后,調(diào)用預(yù)設(shè)的合并pdf類將填充信息數(shù)據(jù)后的多個(gè)pdf模版合并生成pdf文件并發(fā)送給用戶交互模塊進(jìn)行展示。
具體的,為了增加通用性,所有模版組件包含的功能都可單獨(dú)在一個(gè)pdf模板里實(shí)現(xiàn),可以通過對(duì)模板的合并實(shí)現(xiàn)復(fù)用;合并是通過copypdf類實(shí)現(xiàn),如copypdf(pdffile1,pdffile3,pdffile4,pdffile2)(按照順序合并),即展示時(shí)將每個(gè)文件順序連接為一個(gè)文件。copypdf類是通過公共方法pdfcopy和pdfreader實(shí)現(xiàn)的。pdfcopy只能實(shí)現(xiàn)文件的合并,不能實(shí)現(xiàn)內(nèi)容的合并,即每頁(yè)的內(nèi)容還是保持不變。
該改進(jìn)中,所有pdf文檔組成部分都可以復(fù)用單獨(dú)的模板組件部分功能,開發(fā)時(shí),只要了解各個(gè)組件部分的功能以及實(shí)現(xiàn)的模板,完成模板功能的組裝,可以快速構(gòu)建自己的業(yè)務(wù)功能實(shí)現(xiàn)。
生成的pdf文件可以響應(yīng)前臺(tái)請(qǐng)求,被下載,打印,應(yīng)用,同時(shí)pdf文件被文件服務(wù)器統(tǒng)一管理。主機(jī)上的pdf文檔還可以通過對(duì)外提供webservice(一種可以接收從網(wǎng)絡(luò)上的其它系統(tǒng)中傳遞過來的請(qǐng)求,輕量級(jí)的獨(dú)立的通訊技術(shù))等協(xié)議報(bào)文,生成pdf文檔遠(yuǎn)程傳輸。主機(jī)上的pdf文檔可以按照規(guī)則通過crontab(crontab命令常見于unix和類unix的操作系統(tǒng)之中,用于設(shè)置周期性被執(zhí)行的指令)清理和備份pdf文檔。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。