Izveštaji u java aplikacijama
Šta je jasperreports
Open source java biblioteka za renderovanje
sadrzaja
Formira dokumente od podataka, i
omogućava njihov prikaz i eksport
Izvori podataka: baze podataka, XML, csv,
java beanovi …
Prikaz izveštaja: jasperov prikaz, SWT
preview, pdf, html, csv ...
Kako
Formiranje dizajna izveštaja pravljenjem
report template-a (.jrxml)
Formiranje izvora podataka i upita koji se
izvršava nad njim
Kompajliranje izveštaja (.jasper)
Punjenje izveštaja podacima (.jprint)
Prikazivanje izveštaja (preview, .pdf, .html...)
s
Šta je potrebno
jasperreports-x.z.jar
(http://jasperforge.org/projects/jasperreports)
Java virtuelna mašina (jre 1.3 ili više)
Java kompajler (jdk 1.3 ili više)
Xml parser (JAXP 1.1)
Jakarta commons pomoćne biblioteke:
Javaflow, Digester, BeanUtils, Collections,
Logging (http://commons.apache.org)
I još ...
IDE okruženje (Eclipse, NetBeans ...)
Jasperreports grafički editor:
Jasper Assistant (http://www.jasperassistant.com/)
Ireport (http://jasperforge.org/projects/ireport)
JDBC (ako se radi s SQL-om)
IText za pdf (http://www.lowagie.com/iText)
JfreeChart (http://www.jfree.org/jfreechart)
Formiranje dizajna izveštaja
Dizajn izveštaja ima xml strukturu
Grafički i logički elementi izveštaja su xml
elementi
Osobine elemenata su xml atributi
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="filmovi" pageWidth="595" pageHeight="842"...>
<queryString>
upit
<![CDATA[SELECT naziv P_NAZIV, godina P_GODINA FROM filmovi ORDER BY 1]]>
</queryString>
<field name="P_NAZIV" class="java.lang.String"/>
Parametri, polja, promenljive
....
<pageHeader>
....
</pageHeader>
<detail>
<band height="33">
<textField hyperlinkType="None">
<reportElement positionType="Float" x="2" y="7" width="277" height="15"/>
<textElement>
<font fontName="Arial"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{P_NAZIV}]]></textFieldExpression>
</textField>
....
</band>
</detail>
<pageFooter>
....
</pageFooter>
</jasperReport>
Grafičke sekcije i elementi
Root element
<jasperReport> - opšte karakteristike
<jasperReport ... pageWidth="595" pageHeight="842"
columnWidth="511" leftMargin="42" ...>
Atributi:
name – ime izveštaja
pageWidth, PageHeight – veličina
isTitleNewPage – naziv na posebnoj strani
resourceBundle – podrška za višejezičnost
...
Izgled izveštaja
Stilovi
<style> – dobijanje izgleda grafičkih
elemenata (boje, okviri, fontovi) koji se kasnije
koriste kao atributi raznih elemenata
Fontovi
<font> – definisanje fontova (veličine,
boje, tipa …) koji se kasnije koriste takođe u
grafičkim elementima
Upit
Podaci
<queryString> – dobijanje podataka iz baze
<queryString><![CDATA[SELECT naziv P_NAZIV FROM filmovi></queryString>
Parametri
upit
<parameter> – ulazni parametri za
<parameter name="godina" class="java.lang.Integer"/>
Polja
<field>– dobijeni podaci iz upita
<field name="P_NAZIV" class="java.lang.String"/>
Promenljive
<variable>– manipulacija
parametrima i poljima, kao izrazi koji mogu biti
napisani u Javi (Groovy, JavaScript …)
<variable name="Tekst" class="java.lang.String"> <variableExpression><![CDATA["Naziv " +
$F{P_NAZIV} ]]></variableExpression></variable>
Sekcije izveštaja
Title <title>– početna strana izveštaja
Summary <summary>– rekapitulacija na
poslednjoj strani
Header, footer
<pageHeader>, <pageFooter> –
predstavljaju zaglavlje i dno strane
Detalj
<detail>– odgovara jednom redu
podataka za izveštaj
Grupe
Grupisanje podataka na osnovu definisanog
izraza, koji obično sadrži polja izveštaja
Podaci treba da budu sortirani po tom polju
Grupa <group>– root element grupe
Sekcije grupe <groupHeader>, <groupFooter> –
zaglavlje i dno grupe
Grupe su medjusobno ugnježdene, oko detalja
Prikazni tekst elementi
Labele <staticText> - nepromenljivi izrazi
Tekst polja <textField> - java izrazi od
podataka tj parametara, polja, varijabli
<textField hyperlinkType="None">
<reportElement positionType="Float" x="2" y="7" width="277" height="15"/>
<textElement>
<font fontName="Arial"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{P_NAZIV}]]></textFieldExpression>
</textField>
Neke osobine tekst elemenata
Kada se radi evaluacija evaluationTime
Dinamičko povećanje isStretchWithOverflow
Ne prikazuj null isBlankWhenNull
Formatiranje pattern
Ne štampaj uvek printWhenExpression
Pozicija, veličina, margine, okvir, font
...
Linija
Grafički elementi
<line>
<line>
<reportElement positionType="Float" x="0" y="0" width="511" height="1"
isPrintWhenDetailOverflows="true" backcolor="#000000"/>
<graphicElement><pen lineWidth="0.5" lineStyle="Solid"/></graphicElement>
</line>
Četvorougao <rectangle>
Elipsa <ellipse>
Slika <image>
Grafikon <chart>
Subreport
Bilo koji izveštaj može biti subreport, ako se
doda kao element u neki drugi izveštaj
Element subreport u glavnom izveštaju
<subreport> – mora da definiše ime izveštaja
koji je subreport i izvor podataka
Mapiranje ulaznih parametara
<subreportParameter>
Vraćanje vrednosti iz subreporta glavnom
izveštaju <returnValue>
Crosstab
Međuzavisnost dve ili više varijabli, u formi
tabele sa dinamičnim kolonama i redovima
U ćelijama mogu biti razni grafički elementi
Redovi i kolone <rowGroup>, <columnGroup>–
definisanje ove međuzavisnosti
Header
<crosstabRowHeader>,
<crosstabColumnHeader>
Sume <crosstabTotalRowHeader>,
<crosstabTotalColumnHeader>
Još komponenti
Lista
Tabela
Barkod
Internacionalizacija
REPORT_RESOURCE_BUNDLE parametar
izveštaja koji je veza sa java.util.ResourceBundle
$R{} sintaksom se pomoću ključa pristupa
odgovarajućem prevodu
Jasper java API
Faze izveštaja
NET.SF.JASPERREPORTS.ENGINE.*
JasperDesign.java, instanca ove klase predstavlja
.jrxml fajl
JasperReport.java, instanca ove klase
predstavlja .jasper fajl koji nastaje kompilacijom
.jrxml fajla
JasperPrint.java, instanca ove klase
predstavlja .jrprint fajl, koji nastaje
punjenjem .jasper fajla podacima
Podaci za izveštaj
JRDataSource.java, interfejs za kolekciju
podataka
getFieldValue, metoda koja dohvata polje sa
trenutne pozicije
next, metoda koja iterira po podacima
Implementacije: JRResultSetDataSource,
JRBeanCollectionDataSource,
JRXMLDataSource
Kompilacija
JasperCompileManager.java, kompajlira .jrxml
fajl i formira .jasper fajl
Metoda compileReport kao argument ima
JasperDesign objekat a vraća JasperReport
objekat
Moguće je raditi i sa zadavanjem lokacija
fajlova ili input i output streamovima
.jrxml
compile
.jasper
Punjenje izveštaja podacima
JasperFillManager.java, formira .jrprint fajl
od .jasper fajla i podataka
Metoda fillReport kao argument ima
JasperReport objekat (kompajlirani izveštaj),
JRDataSource objekat (podaci) I mapu
parametara, a vraća JasperPrint objekat
Moguće je raditi i sa zadavanjem konekcije,
lokacija fajlova ili input i output streamovima
.jasper
datasource
parametri
fill
.jrprint
Prikaz izveštaja
JRViewer.java, posebna grafička komponenta za
preview u Swing aplikacijama
Štampanje izveštaja
JasperPrintManager.java slanje .jprint izveštaja
na štampu
Metoda printReport ima kao argument
JasperPrint objekat (može i inputstream i
lokaciju fajla na disku)
Štampa može generisati sliku java.awt.Image
Skraćivanje procesa
JasperRunManager.java direktno od .jasper fajla
i izvora podataka ili konekcije, bez pravljenja
.jrprint fajla na disku, formira .pdf ili HTML fajl
Metode runReportToHtml, runReportToPDF ...
imaju kao argument JasperReport objekat, I
vraćaju niz bajtova koji predtavlja novi fajl u
odgovarajućem formatu
Može se raditi i sa fajlovima na disku, kao I
input i output streamovima
© Copyright 2025 Paperzz