Použití

Instalace

Uživatelé Windows

Rozbalte distribuční archiv do složky, kterou jste si vybrali, např.:

C:\App\jasperstarter

Přidejte složku

C:\App\jasperstarter\bin

do uživatelské či systémové proměnné PATH.

nebo prostě použijte setup.exe

Linuxoví uživatelé

Extrahujte distribuční archiv do složky, kterou jste si vybrali, např.:

/opt/jasperstarter

Přidejte složku

/opt/jasperstarter/bin

do uživatelské či systémové proměnné PATH.

Vyvolání JasperStarteru

Pokud jste přidali složku bin do proměnné PATH, stačí pro vyvolání programu zadat

$ jasperstarter

Pokud ne, můžete zadat absolutní cestu. V Linuxu:

/opt/jasperstarter/bin/jasperstarter

a ve Windows:

C:\App\jasperstarter\bin\jasperstarter.exe

pokud jste se řídili příkladem v kapitole instalace.

Pokud máte problém s binárním souborem nebo s shell skriptem nebo pokud potřebujete pro java VM specifikovat jiné volby, vyvolejte program přímo:

$ java -jar /opt/jasperstarter/lib/jasperstarter.jar

nebo

$ java -cp /opt/jasperstarter/lib/jasperstarter.jar de.cenote.jasperstarter.App

Koncepty

JasperReport soubory

JasperReports zná tři typy souborů:

  • Soubor definující report myreport.jrxml

    Jedná se o xml soubor, který definuje report. Můžete si je napsat ručně, ale spíš použijete jeden z těch hezkých dostupných GUI nástrojů.

  • Soubor zkompilovaného reportu myreport.jasper

    Tento soubor je výsledkem kompilování souboru .jrxml.

  • Soubor reportu s daty myreport.jrprint

    Tento soubor získáte po vyvolání reportu. Data získaná z požadovaného datového zdroje vyplní kompilovaný report a výsledek je možné uložit jako .jrprint soubor.

Stádia zpracování

Zpracování reportu probíhá ve třech fázích:

  • kompilování vytvoří soubor .jasper
  • vyplnění může být volitelně uloženo jako soubor .jrprint
  • náhled, tisk nebo export do jednoho nebo více podporovaných formátů

JasperStarter umí provést všechny najednou v jednom příkazu.

JasperStarter příkazy a volby

JasperStarter obsahuje několik globálních příkazů a voleb. Každý příkaz může mít vlastní volby.

Přehled získáte vyvoláním jasperstarter s -h, které vám ukáže všechny globální volby a příkazy, které máte k dispozici.

$ jasperstarter -h
usage: jasperstarter [-h] [--locale <lang>] [-v] [-V] <cmd> ...

optional arguments:
  -h, --help             show this help message and exit
  --locale <lang>        set locale  with  two-letter  ISO-639  code  or  a
                         combination of ISO-639 and ISO-3166 like de_DE
  -v, --verbose          display additional messages
  -V, --version          display version information and exit

commands:
  <cmd>                  type <cmd> -h to get help on command
    compile (cp)         compile reports
    process (pr)         view, print or export an existing report
    list_printers (printers,lpr)
                         lists available printers
    list_parameters (params,lpa)
                         list parameters from a given report

Každý příkaz má také vlastní nápovědu, kterou lze vyvolat pomocí <command> -h.

Příkaz compile (cp)

Příkaz compile slouží ke kompilování jednoho nebo všech reportů v adresáři. cp je alias pro compile.

$ jasperstarter cp -h
usage: jasperstarter compile [-h] [-o <output>] <input>

optional arguments:
  -h, --help             show this help message and exit

options:
  <input>                input file (.jrxml) or directory
  -o <output>            directory or basename of outputfile(s)

Příkaz process (pr)

Příkaz process slouží ke zpracování jednoho reportu. Může to být náhled, tisk nebo export. pr je alias pro process.

$ jasperstarter pr -h
usage: jasperstarter process [-h] -f <fmt> [<fmt> ...] [-o <output>] [-w]
                     [-a [<filter>]] [-P <param> [<param> ...]]
                     [-r [<resource>]] [-t <dstype>] [-H <dbhost>]
                     [-u <dbuser>] [-p <dbpasswd>] [-n <dbname>]
                     [--db-sid <sid>] [--db-port <port>]
                     [--db-driver <name>] [--db-url <jdbcUrl>]
                     [--jdbc-dir <dir>] [--data-file <file>]
                     [--csv-first-row] [--csv-columns <list>]
                     [--csv-record-del <delimiter>]
                     [--csv-field-del <delimiter>]
                     [--csv-charset <charset>] [--xml-xpath <xpath>]
                     [--json-query <jsonquery>]
                     [--jsonql-query <jsonqlquery>] [-N <printername>] [-d]
                     [-s <reportname>] [-c <copies>]
                     [--out-field-del <delimiter>]
                     [--out-charset <charset>] <input>

optional arguments:
  -h, --help             show this help message and exit

options:
  -f <fmt> [<fmt> ...]   view, print, pdf, rtf,  xls,  xlsMeta, xlsx, docx,
                         odt, ods, pptx,  csv,  csvMeta,  html, xhtml, xml,
                         jrprint
  <input>                input file (.jrxml|.jasper|.jrprint)
  -o <output>            directory or basename  of  outputfile(s),  use '-'
                         for stdout

compile options:
  -w, --write-jasper     write .jasper  file  to  input  dir  if  jrxml  is
                         processed

fill options:
  -a [<filter>]          ask for report parameters.  Filter:  a, ae, u, ue,
                         p, pe (see usage)
  -P <param> [<param> ...]
                         report parameter: name=value [...]
  -r [<resource>]        path to  report  resource  dir  or  jar  file.  If
                         <resource> is not  given  the  input  directory is
                         used.

datasource options:
  -t <dstype>            datasource type:  none,  csv,  xml,  json, jsonql,
                         mysql, postgres, oracle, generic (jdbc)
  -H <dbhost>            database host
  -u <dbuser>            database user
  -p <dbpasswd>          database password
  -n <dbname>            database name
  --db-sid <sid>         oracle sid
  --db-port <port>       database port
  --db-driver <name>     jdbc driver class name for use with type: generic
  --db-url <jdbcUrl>     jdbc url without user, passwd with type:generic
  --jdbc-dir <dir>       directory where  jdbc  driver  jars  are  located.
                         Defaults to ./jdbc
  --data-file <file>     input file for file based  datasource, use '-' for
                         stdin
  --csv-first-row        first row contains column headers
  --csv-columns <list>   Comma separated list of column names
  --csv-record-del <delimiter>
                         CSV Record Delimiter - defaults to line.separator
  --csv-field-del <delimiter>
                         CSV Field Delimiter - defaults to ","
  --csv-charset <charset>
                         CSV charset - defaults to "utf-8"
  --xml-xpath <xpath>    XPath for XML Datasource
  --json-query <jsonquery>
                         JSON query string for JSON Datasource
  --jsonql-query <jsonqlquery>
                         JSONQL query string for JSONQL Datasource

output options:
  -N <printername>       name of printer
  -d                     show print dialog when printing
  -s <reportname>        set internal report/document name when printing
  -c <copies>            number of copies. Defaults to 1
  --out-field-del <delimiter>
                         Export CSV (Metadata)  Field  Delimiter - defaults
                         to ","
  --out-charset <charset>
                         Export CSV (Metadata) Charset  - defaults to "utf-
                         8"

Příkaz list_printers (printers,lpr)

Příkaz list_printers nemá žádné volby. Vypíše všechny tiskárny dostupné ve vašem systému, které můžete použít s volbou -N u příkazu process. printers, lpr je alias pro list_printers.

Příkaz list_parameters (params,lpa)

Příkaz list_parameterss nabídne seznam všech parametrů reportu definovaných uživatelem. params, lpa are aliases for list_parameters.

$ jasperstarter params -h
usage: jasperstarter list_parameters [-h] <input>

optional arguments:
  -h, --help             show this help message and exit

options:
  <input>                input file (.jrxml) or (.jasper)

Sloupce mají následující význam:

  • P/N - Prompt flag ano či ne
  • Název parametru
  • Typ parametru (class name)
  • Nepovinný popis

Příklad výstupu:

$ jasperstarter params myreport.jasper
P background java.awt.Image   Background image
P MyName     java.lang.String Title of some component
P MyDate     java.util.Date

Příkazové soubory

Každý příkaz, volbu nebo argument, které JasperStarter akceptuje, můžete uložit do souboru, který pak po přidání @ můžete přidat k vyvolání.

Takový soubor by měl obsahovat na jednom řádku pouze jeden příkaz/volbu/argument.

Příklad (db.conf):

-t
mysql
-H
localhost
-n
mydb
-u
volker

Příklad vyvolání s příkazovým souborem:

$ jasperstarter pr myreport -f view @db.conf

Pozor! Příkazový soubor nesmí obsahovat žádné prázdné řádky a musí být zakončen jedním zalomením řádku!

Zpracování reportů

Aby došlo ke zpracování reportu, zadejte příkaz pr, který potřebuje následující volby:

  • <input> vstupní soubor (definice reportu, kompilovaný report nebo vyplněný report).
  • -f seznam výstupních formátů oddělených mezerou.
    • view a print se navzájem vylučují, print bude ignorováno, pokud jste zadali i view.
  • -t typ databáze, pokud váš report vyžaduje spojení s databází. Default nastavení je none.
    • pokud typ databáze není none musíte specifikovat údaje potřebné pro spojení.

Všechny ostatní volby jsou nepovinné.

Pro výstup -o viz kapitola "Zacházení se soubory".

<input> je nyní pouze parametr. Na pořadí voleb a tohoto parametru nezáleží, ale parametr nelze umístit za volbu, která sama má jistý počet parametrů. Tyto volby jsou:

  • -f -a -P -r

Následující případ tedy fungovat nebude:

$ jasperstarter pr -f view myreport.jasper

Ale tento bude:

$ jasperstarter pr -f print pdf -d myreport.jasper
$ jasperstarter pr -f view -t mysql myreport.jasper -H localhost -u myuser -n mydb

The easiest way to circumvent any problems regarding arguments is to always place <input> at the first position right behind the command as shown in the following examples.

Minimální report bez databáze

Pro zpracování reportu s prázdnou databází potřebujete minimálně následující volby:

$ jasperstarter pr myreport.jasper -f view

Minimální report s databází

Pro zpracování reportu, který potřebuje připojení k databázi, musíte zadat minimálně následující volby:

$ jasperstarter pr myreport.jasper -f pdf -t mysql -H localhost -n mydb -u appuser

Náhled, tisk nebo export již vyplněných reportů

Report je možné pouze vyplnit. Náhled, tisk a export je možný i později.

Pouhé vyplnění reportu:

$ jasperstarter pr myreport.jasper -f jrprint -t mysql -H localhost -n mydb -u appuser

Náhled již vyplněného reportu:

$ jasperstarter pr myreport.jrprint -f view

Reporty se zdrojem dat ve formátu CSV

Znaková sada souborů CSV je defaultně UTF-8. Další často používané znakové sady jsou cp1252 (Windows), ISO-8859-1 or ISO-8859-15 (Linux). Znakovou sadu CSV souboru lze specifikovat parametrem --csv-charset.

Jednotlivé údaje jsou obvykle odděleny novým řádkem, nemusí tak tomu ale být. separátor je závislý na defaultním separátoru celého systému a ten se v každém operačním systému liší. Pokud používáte CSV soubory z jiného systému, musíte tedy zadat správný separátor pomocí parametru --csv-record-del:

  • Windows: \r\n
  • Linux/Mac: \n

Jednotlivá pole mohou být oddělena jakýmkoliv znakem a navíc být uzavřena do například uvozovkami. Separátor pole je defaultně ,

Jednoduchý příklad:

$ jasperstarter pr csv.jrxml -f view -t csv --data-file data.csv --csv-first-row

Složitější příklad:

$ jasperstarter pr csv.jrxml -f view -t csv --data-file data.csv \
--csv-columns Name,Phone --csv-record-del="\n" --csv-field-del="|" \
--csv-charset=cp1252

Reporty s parametrem runtime

Parametry reportu se mohou skládat z více typů (classes). JasperStarter umí zacházet se všemi typy, které mají konstruktor typu String. Navíc má JasperStarter speciální funkce pro typy, které nemají konstruktor typu String nebo potřebují speciální zacházení. Jedná se o:

  • date, image, locale

Parametry s více hodnotami se oddělují mezerami. Parameter má následující formu:

  • <name>=<value>

    Míso name dosaďte název parametru ve vašem reportu. U názvů parametrů dbejte na velká a malá písmena!

    Datum je v ISO formátu a má tvar: YYYY-MM-DD Parametr typu date akceptuje datum v ISO formátu a ve tvaru YYYY-MM-DD

    Parametr typu locale může mít dvě písmena - jazykový kód ISO-639 - nebo se skládat z kódu pro jazyk (ISO-639) a z kódu pro zemi (ISO-3166) spojených podtržítkem. Například de nebo de_DE.

    $ jasperstarter pr report.jasper -t mysql -u myuser -f pdf -H myhost -n mydb \
    -o report -p secret -P CustomerNo=10 StartFrom=2012-10-01
Parametry pro image

Report lze snadno upravit přidáním loga či obrázku v pozadí jako parametr. V následujícím příkladu použijeme background jako název parametru pro obrázek:

  • Vytvořte ve svém reportu nový parametr a změňte jeho vlastnosti:
    • Name = background
    • Parameter Class = java.awt.Image
  • Přidejte do reportu obrázek a změňte jeho vlastnosti:
    • Image Expression = $P{background}
    • Expression Class = java.awt.Image
  • zkompilujte report

Nyní můžete report zpracovat pomocí JasperStarteru:

$ jasperstarter pr report.jasper -t mysql -u myuser -f pdf -H myhost -n mydb \
-o report -p secret -P background=/tmp/mybackgroundimage.jpg
Zadávání parametrů, které obsahují mezery

Především uživatelé windows budou určitě muset pracovat s názvy souborů, které obsahují mezery. Existují dva způsoby. Zadejte do uvozovek buď hodnotu:

c:\jasperstarter pr report.jasper -t mysql -u myuser -f pdf -H myhost -n mydb \
-o report -p secret -P background="C:\Temp Files\My Image.jpg" otherValue=1

nebo celý parametr:

c:\jasperstarter pr report.jasper -t mysql -u myuser -f pdf -H myhost -n mydb \
-o report -p secret -P "background=C:\Temp Files\My Image.jpg" otherValue=1
Dialog pro zadávání parametrů

JasperStarter umí požádat o zadání parametrů volbou -a.

Lze zobrazit každý parametr, který je v reportu definovaný, ale zadat lze pouze takový, který má typ (class) s konstruktorem, který vyžaduje jeden string coby argumen nebo pro něj existuje extra funkce.

Je možné zúžit výběr zobrazených parametrů pomocí následujících nepovinných argumentů:

  • a - všechny parametry (včetně systémových parametrů)
  • ae - všechny prázdné parametry (parametry, pro které není na příkazovém řádku zadána žádná hodnota)
  • p - všechny parametry definované uživatelem, které byly vybrány pro zobrazení ve výběrovém dialogu (defaultní, pokud -a nemá žádné argumenty)
  • pe - všechny prázdné uživatelské parametry vybrané pro zobrazení
  • u - všechny parametry definované uživatelem
  • ue - všechny prázdné parametry definované uživatelem

V následujících příkladech se podíváme na report bez databáze, který má dva parametry:

  • MyDate (java.util.Date)
  • MyText (java.lang.String)

Uživatel bude vyzván, aby zadal tyto dva parametry:

$ jasperstarter pr myreport.jasper -f view -a

Uživatel bude vyzván, aby zadal dva parametry. Paramet MyDate již je vyplněný, lze ho ale změnit:

$ jasperstarter pr myreport.jasper -f view -P MyDate=2013-01-30 -a

Uživatel bude vyzván pouze k zadání prázdného parametru MyText. Parametr MyDate již je vyplněný a nezobrazí se:

$ jasperstarter pr myreport.jasper -f view -P MyDate=2013-01-30 -a pe

Reporty se zdroji

Reporty mohou používat několik různých zdrojů, jako třeba resource balíčky i18n, ikony či obrázky.

Pokud se zdroje nacházejí ve stejném adresáři jako report, specifikujte pouze -r bez argumentů:

$ jasperstarter pr myreport.jasper -f view -r

Pokud se zdroje nacházejí v jiném adresáři, nebo v souboru jar, můžete jako argument zadat cestu:

$ jasperstarter pr myreport.jasper -f view -r myresources/

nebo

$ jasperstarter pr myreport.jasper -f view -r myresources.jar

Zacházení se soubory

Pokud vstupní soubor (volba -i ) nebyl nalezen, je k názvu souboru přidáno nejdřív .jasper, pokud soubor opět nebyl nalezen, je k názvu souboru přidáno .jrxml. Koncovku souboru tedy můžete vynechat.

Pokud je použitý soubor .jrxml, zkompiluje se a uloží pro další zpracování. Pokud zadáte volbu -w, zkompilovaný soubor se zapíše do adresáře input.

Jako vstupní soubor můžete použít i soubor .jrprint, musíte však zadat celý název souboru.

Pokud není uveden výstupní soubor nebo adresář ( volba -o ), bude pro uložení výstupního souboru použit nadřazený adresář a základní název vstupního souboru:

(...) myreports/report1 -f pdf odt

nebo

(...) myreports/report1.jasper -f pdf odt

nebo

(...) myreports/report1.jrxml -f pdf odt

výsledek:

myreports/report1.odt
myreports/report1.pdf

Pokud existuje adresář output, základní název input poslouží pro pojmenování souboru v adresáři:

(...) myreports/report1.jasper -f pdf odt -o month01/

výsledek:

month01/report1.odt
month01/report1.pdf

Pokud adresář output neexistuje, jeho název poslouží pro pojmenování souborů:

(...) myreports/report1.jasper -f pdf odt -o month01/journal.xyz

výsledek:

month01/journal.xyz.odt
month01/journal.xyz.pdf