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