最近在做的項目中,需要輸出很多報表類文檔,於是選擇用jasper來幫助完成。
使用jasper studio的版本是 :TIB_js-studiocomm_6.12.2_windows_x86_64。有顯示圖片需求的,可以參考本博客。
1.我采用的是json數據源。就是把所有需要往報表中傳遞的數據,全部封裝到一個大的json文件中。稍后會另寫一篇關於如何使用json數據源的博客。
2.現在說顯示圖片的事。json文件中要顯示一個圖片該怎么做呢。把圖片通過轉換工具,轉換為base64字符串,或svg串。
我例子中,pic1為svg串,pic2為base64字符串。稍后會把這個json文件貼上去。此處注意,base64字符串不帶圖片格式這段(”data:image/png;base64,“),有的話記得去掉
3.新建一個jsper report,這些就不細說了。我把其他band都刪除了,就留下一個detail 的band
4.從右側得Palette的Basic Elements中拖一個image元素
5.就先選默認的這個,稍后會修改圖片顯示的表達式。
6.得到了如圖的這個效果
7.現在修改表達式,點擊圖片,會在右下找到修改圖片屬性的地方,如圖
8.如果想顯示base64字符串的圖片的話,點擊Expression行,最右側那個按鈕,step 7 中第二個紅框處 了。
9.框中很長的表達式,是重點,其中$F{pic2}是下方Fields中的第二個了。這個怎么來,之后會講解。其實就是讀取json數據源獲取到的。
重點部分我貼出來,方便復制:new ByteArrayInputStream(org.apache.commons.codec.binary.Base64.decodeBase64($F{pic2}.getBytes()))
10.點擊Main report 下方,第三個按鈕Preview來看效果。出不來的聯系我 445196491@qq.com
11.如果想顯示svg字符串的圖片的話,點擊Expression行,最右側那個按鈕,step 7 中第二個紅框處 了。
重點內容我貼出來,方便大家復制 net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromText($F{pic1})
12.同樣點擊預覽看效果。有困難的,出不來的聯系我。445196491@qq.com