Jaspersoft Studio 有這些基礎(chǔ)元素:
- 線(Line)
- 矩形(Rectangle)
- 橢圓(Ellipse)
- 靜態(tài)文本(Static Text)
- 字段文本(Text field)
- 圖片(Image)
- 框架(Frame)
- 子報(bào)表(Subreport)
- 交叉報(bào)表(Crosstab)
- 圖表(Chart)
- 段落之間的空白(Break)
組合這些元素聋丝,就能創(chuàng)建出一個(gè)非常復(fù)雜的報(bào)表轨帜。甚至還支持自定義的報(bào)表元素!現(xiàn)在讓我們來看看吧O(∩_∩)O~
1 基礎(chǔ)元素
每一種元素都有相應(yīng)的屬性展懈,它們決定了這個(gè)元素的外觀以及位置等具體表現(xiàn)“保可以把這些元素放在欄(bands)中或者放在容器中速那,欄的高度依賴于這些元素內(nèi)容的高度。
1.1 元素列表面板(Palette)
默認(rèn)情況下岔绸,元素列表面板位于主界面的右上位置:
元素列表面板又分為兩個(gè)子面板:
名稱 | 說明 |
---|---|
Basic Elements | 基礎(chǔ)元素列表理逊。 |
Composite Elements | 組合元素(由多個(gè)基礎(chǔ)元素組合而成),支持自定義組合元素盒揉。 |
1.2 元素的屬性
元素的具體屬性依賴于具體的元素類型晋被,下面是矩形元素的屬性視圖:
屬性頁簽 | 可設(shè)置項(xiàng)(屬性) |
---|---|
Appearance | 位置、大小刚盈、顏色以及文本樣式羡洛。 |
Borders | 內(nèi)間距、邊框樣式藕漱、顏色以及元素的寬度欲侮。 |
具體元素名稱 | 元素特有的屬性。 |
Inheritance | 繼承而來的屬性肋联。 |
Hyperlink | 定義超鏈接威蕉,只在 image、text field 以及 chart 元素中可見橄仍。 |
Advanced | 元素的高級(jí)設(shè)置項(xiàng)列表韧涨,可以在此進(jìn)行精細(xì)控制。 |
如果一個(gè)屬性即使沒有被明確定義侮繁,它也會(huì)有一個(gè)默認(rèn)值虑粥。這個(gè)默認(rèn)值一般來源于它繼承的對(duì)象。
2 元素的插入宪哩、選擇以及位置調(diào)整
2.1 插入元素
用鼠標(biāo)從 Palette 中拖拽出需要的元素娩贷,放到欄內(nèi),這時(shí)的元素會(huì)有一個(gè)默認(rèn)的寬度大小锁孟。
然后就可以使用鼠標(biāo)來調(diào)整這個(gè)元素的高度與寬度啦:
2.2 選中多個(gè)元素
使用鼠標(biāo)在你所需要選中的多個(gè)元素外圍育勺,畫一個(gè)大矩形但荤,把這些元素都包圍在內(nèi),就可以一次性選中多個(gè)元素:
注意涧至,選中多個(gè)元素后腹躁,它們的 properties 面板就只會(huì)展示這些元素所共同擁有的屬性!
2.3 調(diào)整元素的位置
2.3.1 使用 Gird 的頁面排版方式
默認(rèn)會(huì)在背景中展示 Grid 的小格子南蓬,這可以在 View -> Show Grid 中進(jìn)行控制纺非。默認(rèn)會(huì)讓元素緊貼著這些小格子,這可以在 View -> Snap to Grid 中進(jìn)行控制赘方。
2.3.2 使用欄
元素的位置是以離它所歸屬的容器(band 或者 frame)的頂部和左邊的距離來界定的烧颖。
可以在 Outline 面板中,把一個(gè)元素從一個(gè)欄拖拽到另一個(gè)欄窄陡。也可以在報(bào)表的編輯區(qū)域中炕淮,直接使用鼠標(biāo),把一個(gè)元素從一個(gè)欄拖拽到另一個(gè)欄跳夭。
2.3.3 使用提示線條
在拖拽元素的過程中涂圆,報(bào)表的編輯區(qū)域會(huì)有時(shí)候出現(xiàn)提示線條,這可以很方便地對(duì)元素進(jìn)行美化排版币叹。
2.3.4 Properties 視圖面板
可以在這個(gè)面板中润歉,對(duì)元素的位置進(jìn)行更精細(xì)的控制:
2.4 在容器中調(diào)整元素的位置
這里的容器指的是 欄(bands)、框架(frames)颈抚、表格單元格(table cells)踩衩、交叉表格單元格(crosstab cells),它們都可以包含多個(gè)其他類型的元素贩汉。
在容器中的元素遵循以下規(guī)則:
- 在表格單元格驱富、交叉表格單元格的元素必須完全填充它所歸屬的容器。
- frames 會(huì)根據(jù)它的內(nèi)容來伸展它的大小匹舞。
- 在 bands 中的元素可能會(huì)橫向擴(kuò)展褐鸥,甚至超過文檔的外邊距;也可能超過 band 的頂部策菜。
2.4.1 容器的布局
有四種容器布局:
- 自由布局(Free layout),默認(rèn)酒贬。
- 水平布局(Horizontal layout)又憨。
- 垂直布局(Vertical layout)。
- 網(wǎng)格布局(Grid layout)锭吨。
有兩種方式可以選擇容器布局:
- 右鍵選擇某個(gè)容器蠢莺,然后選擇 “Arrange In Container”,最后再選擇你想要的容器布局零如。
- 先選擇某個(gè)容器躏将,然后在相應(yīng)容器的 Properties 面板中骂删,Appearance->Layout 中進(jìn)行下拉選擇即可:
2.4.2 網(wǎng)格布局
在網(wǎng)格布局中摆屯,容器中的元素都會(huì)適配到一個(gè)個(gè)小格子中,類似流式布局。里面的元素可以跨多行格子或者多列格子妖碉。
這是自由布局下的元素:
現(xiàn)在我們改為網(wǎng)格布局:
可以看出元素完全填充了它所在的容器!
現(xiàn)在打開在網(wǎng)格布局中的某個(gè)元素沿盅,可以看到在網(wǎng)格布局下的 layout 配置項(xiàng):
是不是多了很多呀O(∩_∩)O~
別怕童谒,我們下面會(huì)一一介紹的:
屬性名 | 值 | 說明 |
---|---|---|
Row Number | Relative(默認(rèn)值);或者是整型拦赠,范圍在 0~1000巍沙。 | 所在行號(hào),0 表示第 1 行荷鼠。如果設(shè)置為 Relative句携,那么它會(huì)緊跟在跟它處在同一行的上一個(gè)元素之后。 |
Column Number | Relative(默認(rèn)值)允乐;或者是整型矮嫉,范圍在 0~1000。 | 所在列號(hào)喳篇,0 表示第 1 列敞临。如果設(shè)置為 Relative,那么它會(huì)緊跟在跟它處在同一列的上一個(gè)元素之后麸澜。 |
Row Span | 整型挺尿,范圍在 0~1000,默認(rèn)值為 1炊邦。 | 元素跨越的行數(shù)编矾。 |
Column Span | 整型,范圍在 0~1000馁害,默認(rèn)值為 1窄俏。 | 元素跨越的列數(shù)。 |
Fixed Size | 布爾型碘菜,默認(rèn)為 false凹蜈。 | true 表示可以手動(dòng)控制元素的大小。false 表示通過其他元素的屬性設(shè)置來自動(dòng)控制元素的大小忍啸。 |
Row Weight | Number仰坦,默認(rèn)值為 1。 | 指定這個(gè)元素的行數(shù)——相對(duì)于其他行中的元素的多少倍计雌。 |
Column Weight | Number悄晃,默認(rèn)值為 1。 | 指定這個(gè)元素的列數(shù)——相對(duì)于其他列中的元素的多少倍凿滤。 |
2.5 網(wǎng)格布局演示示例
1妈橄、這個(gè)示例中使用了一個(gè)垂直型的圖片庶近,也就是它的高度比寬度大很多。現(xiàn)在創(chuàng)建一個(gè)新的報(bào)表眷蚓,模板采用 Green Leaf template鼻种。這時(shí)到項(xiàng)目所在的文件夾中就可以找到一個(gè) leaf_banner_green.png
,我們使用 win7 系統(tǒng)的圖片工具做一個(gè) 90 度旋轉(zhuǎn)溪椎,就可以變成一個(gè)垂直型的圖片普舆。
2、現(xiàn)在創(chuàng)建一個(gè) BlankA4 模板的報(bào)表校读,使用空的數(shù)據(jù)源沼侣。
3、 通過 Palette 的 Image 元素歉秫,把剛才的垂直型的圖片放入到報(bào)表的 title 欄(為了演示方便蛾洛,可以把其他的欄刪除掉)。
4雁芙、通過 Palette 的 Chart 元素轧膘,新增一個(gè) Area Chart,放在垂直型的圖片的右邊兔甘。
5谎碍、拖拽 title 欄,讓它的高度與圖表的高度一致:
6洞焙、在空白處蟆淀,右鍵選擇 Arrage in Container > Grid Layout;也可以在 Title 欄的屬性面板中選擇 Grid Layout澡匪,變?yōu)榫W(wǎng)格布局:
7熔任、選擇圖表元素,在屬性面板中唁情,把 Column Weight 改為 5疑苔,讓圖表的寬度變?yōu)榇怪毙蛨D片寬度的 5 倍:
8、新增一個(gè) static text 元素甸鸟,放在 title 欄的最右側(cè)惦费,新增的元素會(huì)被放在同一行,緊跟在圖表后面:
9抢韭、修改 static text 元素的位置薪贫,選擇這個(gè)元素,然后在屬性面板中:
- 把 Row Number 改為 1篮绰,把這個(gè)元素移動(dòng)到下一行后雷。
- 把 Column Span 改為 2季惯,讓這個(gè)元素可以跨 2 列吠各。
10臀突、把圖表的 Row Weight 改為 10,這樣圖表就成為這張報(bào)表最引人注目的部分咯:
3 格式化元素
右鍵選擇某個(gè)元素贾漏,在上下文菜單中就能看到格式化工具項(xiàng)候学。
3.1 調(diào)整所在層(Order)
工具名稱 | 說明 | 是否可多選 |
---|---|---|
Bring to Front | 放到最頂層 | 是 |
Bring Forward | 放在當(dāng)前層的上一層 | 是 |
Send Backward | 放在當(dāng)前層的下一層 | 是 |
Send to Back | 放到最底層 | 是 |
3.2 容器內(nèi)的對(duì)齊方式(Align in Container)
工具名稱 | 說明 | 是否可多選 |
---|---|---|
Align to Left | 左對(duì)齊 | 是 |
Align to Center Horizontally | 水平居中對(duì)齊 | 是 |
Align to Right | 右對(duì)齊 | 是 |
Align to Top | 頂部對(duì)齊 | 是 |
Align to Middle Vertically | 垂直居中對(duì)齊 | 是 |
Align to Bottom | 底部對(duì)齊 | 是 |
Center | 完全居中對(duì)齊 | 是 |
3.3 調(diào)整大小(Size to Container)
工具名稱 | 說明 | 是否可多選 |
---|---|---|
Fit to Width | 元素寬度與容器的寬度一致 | 是 |
Fit to Height | 元素寬度與容器的高度一致 | 是 |
Fit to Both | 元素寬度與容器的高度與寬度一致 | 是 |
3.4 調(diào)整布局(Arrange in Container Tools)
工具名稱 | 說明 | 是否可多選 |
---|---|---|
Free Layout | 自由布局 | 是 |
Horizontal Layout | 水平布局 | 是 |
Vertical Layout | 垂直布局 | 是 |
Grid Layout | 網(wǎng)格布局 | 是 |
3.5 其它
工具名稱 | 說明 |
---|---|
Stretch to Content | 讓元素的大小與它的內(nèi)容大小相一致纵散。 |
PDF 508 Tags | 為 PDF 508C 的編譯格式添加標(biāo)簽梳码。 |
XLS Tags | 為 Excel 格式添加標(biāo)簽,用于定義數(shù)據(jù)的導(dǎo)出方式伍掀。 |
4 圖表元素
使用圖表元素可以讓報(bào)表更具可讀性掰茶,而且也更有吸引力。
4.1 線條(Line)
一條線是被一個(gè)矩形框起來的斜線蜜笤,就像這樣:
默認(rèn)情況下濒蒋,線條前景色采用默認(rèn)顏色,寬度為 1px把兔』铮可以在屬性面板中自定義線條的外觀。
4.2 矩形(Rectangle)和橢圓(Ellipse)
矩形元素一般用于畫一個(gè)框把某些元素框起來县好,它的前景色采用默認(rèn)顏色围橡,寬度為 1px。
橢圓元素比較特別缕贡,它唯一一個(gè)沒有自己獨(dú)立的屬性標(biāo)簽項(xiàng)的元素翁授!它會(huì)被一個(gè)矩形框起來,像這樣:
4.3 圖片(Images)
可以插入各種圖片(諸如 GIF善绎、PNG 以及 JPEG)黔漂,也可以插入作為 canvas 對(duì)象的圖片元素,甚至可以自定義 Swing 組件禀酱。
在 Palette 中把 Images 元素拖拽到報(bào)表編輯區(qū)炬守,這時(shí)就會(huì)打開一個(gè)圖片對(duì)話框:
是不是很強(qiáng)大呀O(∩_∩)O~
注意,Jaspersoft Studio 不會(huì)實(shí)際保存這些選擇的圖片剂跟,它只會(huì)保存文件路徑减途!
4.4 image 和 text 元素的內(nèi)邊距與邊框設(shè)置
image 和 text 元素中的內(nèi)邊距(Paddings)指的是元素邊界與它的內(nèi)容之間距離,它包含四個(gè)方向的設(shè)置曹洽。
邊框(Borders)中可以設(shè)置元素的顏色鳍置、樣式以及寬度。
這些設(shè)置項(xiàng)單位都是像素送淆!
5 文本元素(Text)
靜態(tài)文本(static text) 和 文本字段(text field)元素都可以用于文本的顯示税产。
靜態(tài)文本元素用于創(chuàng)建文本標(biāo)簽,一旦定義好,就不會(huì)改變辟拷。
文本字段元素與靜態(tài)文本元素功能相似撞羽,但它的內(nèi)容可以是表達(dá)式,也就是說它可以動(dòng)態(tài)改變衫冻,所以叫它動(dòng)態(tài)文本可能更貼切些诀紊。
默認(rèn)情況下,這兩種元素都是透明的隅俘、無邊框并且使用的是黑色字體顏色邻奠。
5.1 靜態(tài)文本元素
它的內(nèi)容只能是普通文本!
5.2 文本字段元素
文本字段元素很強(qiáng)大为居,它可以使用各種表達(dá)式碌宴,所以它可以很容易替換掉靜態(tài)文本元素所提供的功能!它最常用的地方是報(bào)表的國際化功能蒙畴,通過定義表達(dá)式唧喉,這些文本就可以根據(jù)國際化的要求,變?yōu)椴煌瑖业恼Z言忍抽!文本字段表達(dá)式(text field expression)的 class 類型可以是這些:
表達(dá)式類型 | 表達(dá)式類型 | 表達(dá)式類型 |
---|---|---|
java.lang.Object | java.sql.Time | java.lang.Long |
java.lang.Boolean | java.lang.Double | java.lang.Short |
java.lang.Byte | java.lang.Float | java.math.BigDecimal |
java.util.Date | java.lang.Integer | java.lang.String |
java.sql.Timestamp | java.io.InputStream |
如果表達(dá)式的 class 不正確八孝,那么就會(huì)發(fā)生編譯錯(cuò)誤。如果使用了 Groovy 或者 JavaScript 腳本鸠项,那么可以選擇 String 類型的表達(dá)式干跛,否則也會(huì)發(fā)生編譯錯(cuò)誤。
除了表達(dá)式(Expression)之外祟绊,文本字段元素還有這些屬性:
屬性 | 說明 |
---|---|
Blank when NULL | 如果設(shè)為 true楼入,那么當(dāng)遇到內(nèi)容為 null 時(shí),將不會(huì)打印出 “null”牧抽。 |
Evaluation Time | 表達(dá)式是在哪一個(gè)階段被執(zhí)行嘉熊。 |
Stretch with overflow | 如果被勾選,則表示如果元素內(nèi)容太長扬舒,無法在一行內(nèi)顯示時(shí)阐肤,那么內(nèi)容將會(huì)被跨行顯示。 |
Pattern | 可以對(duì)內(nèi)容進(jìn)行格式化讲坎,它也是一個(gè)表達(dá)式孕惜。 |
Stretch with overflow 未被勾選前:
Stretch with overflow 被勾選后:
可以看出,如果沒有勾選 Stretch with overflow 晨炕,那么過長的內(nèi)容將會(huì)被截?cái)嗟簦?/p>
6 框架(frame)
框架元素內(nèi)部可以包含其他元素衫画。
可以直接把元素拖拽到框架元素中;也可以在 outline 標(biāo)簽頁中瓮栗,把元素拖拽到框架元素中削罩。
如果容器是一個(gè) band瞄勾,則內(nèi)部元素坐標(biāo)的相對(duì)位置是這個(gè) band 的頂部與左邊的外邊距大小弥激;而如果容器是一個(gè) frame丰榴,則內(nèi)部元素坐標(biāo)的相對(duì)位置是這個(gè) frame 的頂部與左邊的大小。
使用 frame 的好處是秆撮,可以畫一個(gè)邊框把某一類的元素圈起來,這里推薦使用矩形框换况,這樣這些元素就可以作為一個(gè)整體統(tǒng)一操作咯:
- 移動(dòng)一個(gè) frame职辨,包含在這個(gè) frame 的所有元素都會(huì)一起被移動(dòng)。
- frame 的大小會(huì)自適應(yīng)它的內(nèi)容大小戈二。
7 使用組合元素
組合元素指的是之前預(yù)配置好的元素舒裤。Jaspersoft Studio 中內(nèi)置了一些組合元素,諸如 page number 等:
組合元素只能包含這些元素:notes觉吭、text fields腾供、static text、images鲜滩、breaks伴鳖、rectangles、ellipses徙硅、lines榜聂、frames、barcodes嗓蘑、HTML 元素以及其他的組合元素须肆。
如果組合元素內(nèi)部,使用了帶有表達(dá)式的元素桩皿,這些表達(dá)式對(duì)象應(yīng)該是即時(shí)可用豌汇,否則就會(huì)拋出錯(cuò)誤。
注意: 組合元素不能包含基于數(shù)據(jù)集的元素泄隔,比如圖表拒贱、交叉報(bào)表等。
7.1 創(chuàng)建并編輯組合元素
1佛嬉、新建一張 A4 大小的空?qǐng)?bào)表柜思,然后把要組合的元素放在 Title band(組合元素只能從這里生成!)巷燥。
2赡盘、這里我們創(chuàng)建一個(gè)【頁尾組合】元素,它包含公司名稱以及當(dāng)前頁號(hào):
【1】拖拽一個(gè) Static Text 元素缰揪,鍵入公司名稱陨享,然后把它設(shè)置為【對(duì)齊到左邊距】(Align in Container > Align to Left Margin)
【2】拖拽一個(gè) Page Number 元素然后把它設(shè)置為【對(duì)齊到右邊距】(Align in Container > Align to Right Margin),再把它的文本對(duì)齊方式改為右對(duì)齊(屬性頁中的 Text Field)
【3】選中這兩個(gè)元素葱淳,右鍵修改它的組件對(duì)齊方式(Align in Container)為 Align Top。
3抛姑、選中這兩個(gè)元素赞厕,然后把它們放入 Frame(右鍵-》Enclose into Frame)
4、右鍵保存為組合元素(Save as Composite Element)
輸入名稱定硝、描述皿桑,再選擇圖標(biāo)(如果沒有選擇,會(huì)使用默認(rèn)的圖標(biāo))蔬啡,最后是選擇在 Palette 中的位置诲侮。保存后就可以在 Palette 中看到啦:
刪除組合元素很簡單:選中某個(gè)組合元素,然后點(diǎn)擊右鍵 -》刪除箱蟆。只能刪除我們自定義的組合元素哦O(∩_∩)O~
7.2 導(dǎo)出與導(dǎo)入組合元素
選中某個(gè)組合元素沟绪,然后點(diǎn)擊右鍵 -》導(dǎo)出或?qū)耄芎唵蔚睦部詹拢赃@里就不詳述咯O(∩_∩)O~
8 錨绽慈、書簽以及超文本鏈接
定義一個(gè) URL,那么在導(dǎo)出的 PDF 中辈毯,用戶就可以點(diǎn)擊某個(gè) URL坝疼,查看更詳細(xì)的信息啦O(∩_∩)O~
圖片、text field 或者圖表元素的屬性中谆沃,都有一個(gè) Hyperlink 標(biāo)簽頁裙士。
8.1 錨與書簽
一個(gè)錨(anchor)可以指定文檔中的一個(gè)特殊的位置。如果導(dǎo)出的是 PDF管毙,還可以指定書簽的級(jí)別腿椎。
8.2 超文本鏈接(Hyperlinks)
超文本鏈接中,最重要的屬性是 Link Type夭咬,它決定了目標(biāo)的格式啃炸。
還有這些屬性:
- Link Target——指定打開目標(biāo)鏈接的位置(Self,Blank,Top 以及 Parent)。
- Hyperlink When Expression——當(dāng)表達(dá)式返回 true 時(shí)卓舵,才添加超文本鏈接南用。
- Tooltip Expression——當(dāng)鼠標(biāo)滑過超文本鏈接時(shí),需要展示的提示信息掏湾,它是一個(gè)表達(dá)式裹虫。
8.2.1 創(chuàng)建 URL 鏈接
可以把 field 的值動(dòng)態(tài)地傳送給 URL,像這樣:
"http://www.someurl.com/search?city=" + $F{city} + "&country= + $F{country}
8.2.2 創(chuàng)建報(bào)表鏈接
下面這里類型在 PDF 與 HTML 中得到支持:
- LocalAnchor - 在同一份文檔中創(chuàng)建錨融击。
- LocalPage - 在同一份文檔中的指定頁創(chuàng)建錨筑公。
- RemoteAnchor - 指定了其他文檔中的某個(gè)位置的錨。
- RemotePage - 指定了其他文檔中的某個(gè)特別頁面位置的錨尊浪。