JasperReports

Uit Beheerplein

Ga naar: navigatie, zoeken


Portal voor applicatie: JasperReports
In deze portal vindt u de informatie over de applicatie JasperReports van leverancier JasperForge.
Applicatie informatie

Button.pngVeelgestelde vragen (FAQ) (0)


Button.pngModules (0)


Button.pngReleases (5)

Button.pngDocumentatie / Howto (0)


Button.pngWijzigingen (0)


Button.pngTestplannen/scripts (0)


Button.pngScripts (0)


Button.pngFuncties (0)

Button.pngAfhankelijkheden (0)


Beheerplein maakt gebruikt van open source oplossingen en is als web 2.0 toepassing vooral afhankelijk van de input van een ieder die het beheer en warm hart toedraagt. Meldt u daarom aan, gebruik de kennis van anderen en deel uw kennis.

-

-


Datum: 6 februari 2012 | Tijd: 13:34 MET



Datum: 6 februari 2012 | Tijd: 13:34 MET Andere sites in deze serie: www.computererfgoed.nl


Introductie

JasperReports is een veelgebruikt open source (LGPL) reporting library geschreven in Java. Met JasperReports is het mogelijk om een rijke variatie aan rapporten te maken in PDF, RTF, HTML, CSV en XML.

Beginnen met JasperReports

JasperReports' rapporten worden gedefinieerd in XML files, welke een .jrxml extensie hebben. Een jrxml bestand bevat o.a. de volgende elementen:

Al deze elementen zijn optioneel behalve het root-element 'jasperReport'.

Voorbeeld jrxml bestand welke een eenvoudig rapport maakt met de tekst "Hello World!"

<?xml version="1.0"?>
<!DOCTYPE jasperReport
  PUBLIC "-//JasperReports//DTD Report Design//EN"
  "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
 
<jasperReport name="Simple_Report">
 <detail>
    <band height="20">
      <staticText>
        <reportElement x="180" y="0" width="200" height="20"/>
        <text><![CDATA[Hello World!]]></text>
      </staticText>
    </band>
  </detail>
</jasperReport>

Dit voorbeeld bevat geen <title>, <pageHeader> en <pageFooter> elementen maar wel een <staticText> element. Dat element plaatst vaste tekst in een rapport. Zoals in dit voorbeeld te zien bevat het een <text> element met de tekst welke wordt afgedrukt.

jrxml bestanden moeten vertaald worden ("gecompileerd") naar een binair formaat welke specifiek is voor JasperReports. Dat kan door het aanroepen van de compileReport() methode in de net.sf.jasperreports.engine.JasperCompileManager classe. Er zijn meerdere 'overloaded' versies van deze methode. In het volgende voorbeeld wordt een versie gebruikt welke gebruik maakt van een 'string' parameter.

public class JasperReportsIntro
{
  public static void main(String[] args)
  {
    JasperReport jasperReport;
    JasperPrint jasperPrint;
    try
    {
      jasperReport = JasperCompileManager.compileReport(
          "reports/jasperreports_demo.jrxml");
      jasperPrint = JasperFillManager.fillReport(
          jasperReport, new HashMap(), new JREmptyDataSource());
      JasperExportManager.exportReportToPdfFile(
          jasperPrint, "reports/simple_report.pdf");
    }
    catch (JRException e)
    {
      e.printStackTrace();
    }
  }
}


Een jrxml bestand hoeft maar een keer gecompileerd te worden maar in dit voorbeeld wordt het iedere keer gecompileerd wanneer het rapport wordt gestart. Voordat een rapport wordt aangemaakt moet het eerst gevuld worden met gegevens. Dit gebeurt door het aanroepen van de fillReport() methode van de net.sf.jasperreports.engine.JasperFillManager classe. Ook hiervan zijn meerdere versies. In het voorbeeld wordt de versie gebruikt met drie parameters, een 'instance' van net.sf.jasperreports.engine.JasperReport, een java.util.HashMap welke alle parameters bevat welke meegeven worden aan het raopport en een 'instance' van een classe welke de net.sf.jasperreports.engine.JRDataSource interface implementeert. De regel in het bovenstaande voorbeeld welke dat doet is:

jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), new JREmptyDataSource());

Omdat het eenvoudige voorbeeld geen parameters meekrijgt geven we een lege HashMap als de tweede parameter mee en een 'instance' van net.sf.jasperreports.engine.JREmptyDataSource als derde parameter. JREmptyDataSource is een 'convenience' classe in JasperReports. Het is een datasource zonder data.

Als laatste in het voorbeeld exporteren het rapport naar een pdf bestand door middel van de volgende regel:

JasperExportManager.exportReportToPdfFile(jasperPrint, "reports/simple_report.pdf");

Foutmelding

Bij gebruik van verschillende versies van JasperReports/iReports (versie 1 of 2 samen met 3) kan de volgende foutmelding in beeld komen: "net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException: Element type "topPen" must be declared." Oorzaak van deze foutmelding is een aanpassing voor afhandeling van borders in een rapport. Versies van beide programma's naar versie 3 brengen geeft de oplossing. Een andere optie is om een configuratieparameter, welke de manier van border afhandeling beinvloed, op versie 2 in te stellen (=oude manier van borderafhandeling). JasperReport changelog release 3.0.0: new configuration property called "net.sf.jasperreports.export.legacy.border.offset" to allow rendering element borders in older reports using the legacy border offset technique that that was used in versions prior to the 2.0.3 release. English

cause of this error is the change in version 3 for handling borders. Transit to the new version or make use of the configuration option (see above).

Persoonlijke instellingen
Naamruimten
Varianten
Handelingen
Navigatie
Hulpmiddelen