您好,登錄后才能下訂單哦!
本文試圖對市面上流行的純java實(shí)現(xiàn)的web報表工具,jasperreport 、 stylereport 、杰表、潤乾報表、快逸、finererport為例,分析各報表工具采用的web打印技術(shù)的異同、優(yōu)劣、及對用戶需求的適應(yīng)性,供大家參考。
打印是報表工具的基本功能之一,有些報表工具就是從一個專門的打印程序中發(fā)展而來,如用友華表。因?yàn)橄氘?dāng)然地簡單,所以,在報表工具選型時用戶常常忽略這個問題,特別是有些報表工具廠商,明知自己的打印方案在滿足某些需求時,存在缺陷,但沒有盡明確告知義務(wù),而事先有關(guān)打印方面的文檔。我曾不至一次地聽說,有些開發(fā)商選用的報表工具,其打印功能不能滿足需求,不得不另外找打印工具的事情,實(shí)在是吃盡苦頭。
報表打印在c/s時代,確實(shí)非常簡單,vb,vc,Delphi,pb,都有很好用的打印api,有的甚至用報表控件方式,搞定打印更是分分秒的事情,但今天是b/s的天下,報表都是在網(wǎng)頁瀏覽器中顯示,但當(dāng)今的瀏覽器打印功能一般非常弱(誰讓你叫他“瀏覽”器呢?“瀏覽”就是讓你用眼睛看,“打印”屬于兼職),要做到精確分頁打印,幾乎不可能,所以當(dāng)前的報表工具,一般不會讓你使用瀏覽器的打印菜單來打印報表,都有自己的解決方案,這下可好,各報表工具廠商由是乎,八仙過海,各顯神通,各家都說自己的好,對于web打印了解不深的客戶,總有霧里看花的感覺。
歸納來說,當(dāng)今java報表工具采用的打印技術(shù)不外乎三類:Applet打印、導(dǎo)出成pdf/excel打印、控件打印。用戶選用的重點(diǎn)是:盡量選擇插件小的打印軟件,因?yàn)槲募∫馕吨惭b迅速,啟動速度快。插件大小除了插件本身的大小外,還需要考慮支持軟件的大小,如有些插件很小,支持軟件卻很大。
Applet打印
本文開始處提及的報表工具,除finereport外都支持Applet打印。之所以多數(shù)廠商支持Applet方式打印,因?yàn)锳pplet是java實(shí)現(xiàn),與java后臺、java報表設(shè)計器的兼容性較好,代碼容易維護(hù),實(shí)現(xiàn)也方便。然而,廠商省事,用戶就得多事。Applet方式打印,用戶最多的抱怨是需要安裝jre(而當(dāng)前的操作系統(tǒng),一般不是默認(rèn)安裝的),雖然說,多數(shù)廠商已經(jīng)做到可以自動安裝jre,但對于10幾M(JRE1.4有15M,JRE1.5為16M))的安裝,這意味著用戶需要較長時間的等待。
另一個問題是Applet配置復(fù)雜,使用不穩(wěn)定。1995年,正是因?yàn)榻o人們無窮的視覺和腦力震蕩的Applet ,使人們認(rèn)識了java,認(rèn)識了Games Gosling。所以在b/s早期,人們?yōu)榱苏宫F(xiàn)html的富客戶效果,Applet是唯一之選。但現(xiàn)如今,Applet已經(jīng)是昨日黃花,早已被ajax、flex取代,是什么原因?戰(zhàn)略層面的東西,我也不太說得清楚,但作為程序員,經(jīng)過幾番折騰后,也不會愿意再用Applet了。如經(jīng)常莫名其妙地出現(xiàn)“小應(yīng)用程序,… notinited”的錯誤,還得清理ie緩存,對于Applet打印,還需要設(shè)置jre的安全策略等等。不是靠終端用戶能完成的,這就必須額外地增加開發(fā)商的服務(wù)成本。
Applet打印,啟動速度慢。Applet打印原理是,當(dāng)你點(diǎn)擊打印按鈕時,瀏覽器啟動Applet,Applet根據(jù)參數(shù)訪問后臺頁面信息,后臺返回頁面,Applet加載頁面后,調(diào)用jre的打印服務(wù)進(jìn)行打印。這就意味著,每次打印都需要調(diào)用后臺服務(wù)程序,就必然影響打印的響應(yīng)速度。
Applet打印很安全,言下之意是ActiveX打印不安全,這是采用Applet打印的廠商津津樂道的,實(shí)際上,這是一個偽命題。Applet和ActiveX都是瀏覽器的插件,我們當(dāng)然不希望下載插件后,該插件可以為所欲為,比如,刪除你磁盤里的文件,或啟動一個木馬,從這點(diǎn)來說,Applet確實(shí)比ActiveX安全,因?yàn)锳pplet是在一個受限的環(huán)境里運(yùn)行,而ActiveX是不受限的。所以,當(dāng)你訪問一個陌生的網(wǎng)站時,出于安全考慮,你可能會允許下載運(yùn)行Applet,而阻止ActiveX。但當(dāng)用戶訪問自己的網(wǎng)站系統(tǒng),時,這種擔(dān)心就沒必要,這好比,當(dāng)你與陌生人打交道時,很自然地會問自己,這人可信嘛?但如果你與家里人打交道,這個問題就不成其為問題了。
Applet打印,除了可以設(shè)置打印機(jī),設(shè)置紙張頁面大小等常規(guī)打印功能外,往往也集成與打印不相關(guān)的功能,比如,打印前修改(有人說,是為了做假帳方便,中國特色,國產(chǎn)報表工具一般都具備,jasperreport,stylereport不支持),按行分頁,自由定位,這些本來由設(shè)計器完成的功能,挪到打印功能上來,來掩蓋上面指出的Applet的種種不足。實(shí)際上,Applet功能強(qiáng)弱完全取決于Applet的大小,有些報表廠商甚至用Applet或web start 的方式,提供所謂的基于web的報表設(shè)計,前提是下載 40多M的jar包,實(shí)際上,這種方案遠(yuǎn)非一般意義上的純web 的報表設(shè)計,完全是混淆概念。作為用戶最希望常規(guī)的,他們熟悉的打印功能,不需要不相關(guān)的,理解困難的打印功能。
PDF/EXCEL打印 Pdf打印方式,就是用戶點(diǎn)擊打印后,瀏覽器會自動彈出adobe reader,再利用adobe的打印按鈕進(jìn)行打印,由于國外adobe reader安裝非常普及,國外的java報表工具多提供這種打印方案,比如 stylereport,jasperreport,國內(nèi)報表工具finereport也采用這種方式(讓人不解),pdf方式打印的好處是能做到精確打印,而且報表預(yù)覽與打印一氣呵成。但不足是需要在客戶的機(jī)子里,事先安裝有adobe reader,作為程序員,一般不太會有問題,因?yàn)槌绦騿T可能經(jīng)常要瀏覽一些pdf文檔,多數(shù)已經(jīng)裝了adobe reader,但國內(nèi)的終端用戶,大多不知pdf是何物,更談不上安裝。
Pdf打印的另一個問題是必須彈出adobe reader,不能做到無預(yù)覽打印,這可能由于pdf缺少相應(yīng)api的緣故吧。
輕量級的ActiveX打印
這里之所以強(qiáng)調(diào)“輕量級”,目的是與傳統(tǒng)意義上的ActiveX報表相區(qū)別。ActiveX技術(shù)可以說是報表工具家族里的沒落貴族,c/s時代,報表工具一般都被做成控件形式,水晶報表就是如此,在b/s時代,報表工具里仍然能看到ActiveX的身影,但風(fēng)光大不如從前,如數(shù)巨,明宇,用友華表,inforeport。用ActiveX實(shí)現(xiàn)報表的不足,在網(wǎng)上你能輕易找到,在此不再詳述。ActiveX 報表雖深受詬責(zé),但從打印功能來說,卻都是近乎完美,處理得卻非常好,非常穩(wěn)定。
既然,ActiveX打印是長處,能不能揚(yáng)長避短地使用ActiveX技術(shù)?有人提出這樣的問題。于是,有些廠商,比如杰表,采用了瀏覽時用html,打印時用插件的方式。這種方案的需要解決的問題是,ActiveX打印控件,不能太大,否則報表工具成了ActiveX報表了。
與Applet相比,輕量級ActiveX打印具有以下優(yōu)勢:
1. 下載時間短,(大小是Applet的1/250);
2. 本地打印,打印時,不需要訪問后臺服務(wù)程序,不占用服務(wù)器資源;
3. 啟動速度快,由于控件小,且本地打印,所以打印速度是優(yōu)于以上兩中打印方案,打印速度與你點(diǎn)擊瀏覽器打印菜單相差無幾。
采用輕量級的ActiveX打印的不足是,只有ie 5.5 及以上版本支持,其他版本的瀏覽器不支持。好在ie5.5瀏覽器已非常普及,在用戶那里應(yīng)該不是大問題。
杰表采用的打印方案,用一個jatoolsPrinter的控件,大小是60k,是經(jīng)過數(shù)字簽名的。這個打印控件采用ie特有的打印技術(shù)(templateprinter)實(shí)現(xiàn)打印功能,支持打印,預(yù)覽,邊距設(shè)置,重復(fù)打印,批量打印功能。
目前,jatoolsPrinter已經(jīng)從杰表中獨(dú)立出來,任何報表工具或第三方軟件都利用該控件,實(shí)現(xiàn)web打印,推出至今,免費(fèi)加收費(fèi)用戶上萬。
下表總結(jié)三種方式的采用者及優(yōu)劣對比,對于ie5.5客戶來說,我們推薦使用ActiveX打印方案.
報表廠商列表
jasperreport
Stylereport
杰表
潤乾
快逸
finererport
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。