ireport+jasperReport+java生成PDF

#### ireport + jasperResport

[source,]
----
ireport編輯PDf模板,設置參數及變量,與jasperReport完美結合,在java中通過動態賦值從而生成PDF。
----

##### 參數Paramters和變量Field
[source,]
----
1、一般PDF中的單一屬性值可以通過設置參數值,在java代碼中創建Map來進行賦值;而Field主要設置在Detail區域,獲取後臺的list數據(Field可以設置爲實體類的字段名);

2、可以設置不同的參數類型,如String,BigDecimal等;

3、可以對ireport的PDF模板中的參數設置一個key值,java程序可以通過這個key值來獲取到該控件,從而進行後續操作;(變量同理)

4、markup:可以將該控件內容設置爲html格式,從而可以輸出一些html的轉義標籤,如換行<br>(該方式可以解決在linux下內容被截斷的問題);

5、Position type:控件位置,可以設置爲浮動或固定;

6、Stretch Type:控件內容伸縮規則;

7、Pringt When Expression:可以對該控件設置表達式以控制控件的打印與否,如new Boolean($F{checked}),即爲當checked爲true時,該控件打印;

8、Pattern:設置控件內容的格式,如日期格式;

9、Stretch When Overflow:當控件內容太多時,可以進行動態伸縮。

10、Blank When NULL:當控件內容爲NULL時打印空白,而不是NULL;

11、Horizontal Alignment:設置控件內容的水平分佈,居中或居左/右;

12、Vertical Alignment:設置控件內容的垂直分佈,居中或居左/右

13、Rotation:控件內容旋轉;

14、Line Spacing:控件內容的行間距;

15、Text的Pdf Name屬性一般選擇Sans Serif西體字。
----

##### 注意點
[source,]
----
1、如果想要打印出中文字體,應該怎麼做?
(1)設置Pdf字體爲STSong-Light;
(2)Pdf Encoding:UniGB-UCS2-H;
(3)導入iTextAsian.jar。

2、Detail區域由於自帶循環屬性,主要放置的是報表的list數據;在Column Header中一般放置表格的頭部;Column Footer放置表格的統計部分,但是需要注意的是這三個區域在每一頁都會顯示。

3、一般Detail和Column Footer之間會有一個空白的區域,如何去掉?
勾選該PDF的Float column footer屬性。

4、Summary區域一般作爲文件的總結放在尾部,且只出現在最後一頁。

5、Page Header與Page Footer作爲頁面的頭部和尾部,可以設置是否在每一頁出現;但是Page Footer與Detail之間總會出現一段空白,因此如果想要避免這種情況,可以將需要和Detail連接在一起的數據放在Summary區域,但是由於Summary是作爲一個整體存在,當一頁剩餘的空間不足以放下整個Summary時,程序會自動將Summary放置在下一頁,這樣也會出現和Detail之間有空白的現象,因此目前空白區域問題無法完全解決(後續研究透徹後可能會解決這個問題。。。)。

6、PDF的內容可以通過設計多個Frame框架來佈局,這樣整體樣式比較好控制。
----

##### 在java中通過JasperReport和Ireport生成PDF
[source,]
----
1、引入以下包:
groovy、groovy-all、jasperreports、jasperreports-fonts
        
2、由於jasper無法解析到ItextAsian.jar,因此設置中文格式無法正常顯示,需要將iTestAsian包重新打包部署。

3、動態設置表格的列(或任意的控件)顯示與否?
第一種方式:可以設置Print Expression,通過正則表達式的方式進行;
第二種方式:在PDF的模板中設置一個Collection類型的參數,通過java程序給該集合賦值,從而達到動態設置的效果。

4、動態設置每個列的寬度?
通過Jasper根據控件的key值就可以獲取到該控件,然後就可以設置各種屬性。

5、linux下無法通過File的路徑獲取到文件,需要使用流來進行操作,因此不能直接在項目中放置.jasper文件,因爲如果模板中有引入其他圖片或文件,將會導致文件找不到,從而無法生成PDF。正確的做法是:在項目中放置未經編譯的原始ireport文件,即.jrxml文件。一般放置在resources下,在jrxml中可以直接使用/pdf/xxx.png路徑的方式引入圖片。
----
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章