jasperreport使用心得


好幾年前曾將用過jasperreport,當時的設計工具為ireport,如今已經變成jasperstudio,看來eclipse成為主流已是不爭的事實了!

由於項目的需要,不得不重新學習一下這個新的工具了,總體上來說其設計思路還是不變的。想系列學習的,可以參照如下地址進行學習:http://blog.csdn.net/pigdreams/article/month/2017/02

本文只對項目中用的相關知識進行總結如下:

1、導出pdf中文問題,由於采用的是itext生成pdf,早期版本采用亞洲語言包可以滿足要求,新的版本已經不行了,需要將字體達成jar包,添加依賴。具體可參照csdn那位的博客,在此也向其表示感謝!

關於粗體、斜體的問題,如果采用的字體沒有單獨的文件,請移除相關的節點,否則在開發環境里面有效果,正式運行就會丟失效果了!

 

2、圖表的問題,jasperreport本身采用的是jfreechat,對於大多數項目已經能夠滿足,但對於我們項目來說,圖表個性化太強,jfreechart不能滿足要求,好在Jasperreport提供了一個 custom visualization component.

其原理是采用js繪制成svg,在填充報表時采用生成的svg(如pdf、html格式)或圖片(如word格式)進行填充。

官方有相關的地址進行說明:http://community.jaspersoft.com/wiki/custom-visualization-component-v60x

另外jasperreport libaray 本身是不帶 custom visualization 相關的jar包,可通過下載jasperreport server項目,在其中找到相關的jar包。

3、在生成報表的過程中,發現臨時生成的svg文件不能刪除,同時依賴的js文件不斷創建刪除。苦於找不到custom visualization component的源碼(jasperreport官網也沒找到),因此自能反編譯相關類了。

進行小手術!

  • 判斷臨時目錄是否存在,不存在創建,不再刪除

  •   對於無法刪除的svg文件的原因的是在讀取流的過程中,沒有close

4、頁面好像只有detail band可以自動調整高度,其它band除非有sub report

5、多個模板合成,可以有兩種方式。

  • 先填充第一個模板,然后依次填充其它模板,所有頁面填充完成后,將第一個模板以后的頁面添加到第一個模板中。

 

 

  • 采用批量導出的功能,所有模板依次填充,然后放入一個list中,采用exporter實現導出。

 

總的來說,個人傾向與第二種方式,可以增加更加靈活控制的參數,比如pdf可以增加bookmarker,甚至加密等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM