JasperReports
Présentation de la librairie JasperReports
Le projet JasperReports est un projet très actif (mises à jour tous les 2 mois environ), aujourd'hui, la version 5.0 de la librairie est disponible. JasperReports utilise de nombreuses bibliothèques du projet Commons d'Apache comme Collections, BeanUtils, Digester ou encore Logging par exemple. D'autres librairies sont utilisées comme iText pour la génération de PDF.
Dans un premier temps, rappelons les étapes nécessaires à la génération de rapports avec JasperReports :
Etapes pour la création et la génération de rapports
La première étape consiste à avoir un modèle XML (souvent avec extension jrxml) écrit manuellement ou généré à l'aide d'iReport Designer par exemple. Ce fichier va être "compilé" afin d'obtenir un rapport, dont le contenu ne sera plus lisible par l'utilisateur mais compréhensible par JasperReports. L'étape qui suit consiste à "remplir" le rapport avec les données provenant de la source de données afin d'obtenir un rapport rempli qui pourra être imprimé ou exporté sous différents formats.
A chacune des étapes présentées ci-dessus correspond une classe de la librairie :
- JasperDesign : un instance de cette classe correspond à la représentation en mémoire d'un modèle.
- JasperReport : correspond à un rapport compilé
- JasperPrint : représentation d'un rapport rempli
Ensuite, pour passer d'une étape à la suivante, JasperReports propose des classes facades :
- JRXmlLoader : permet de charger un modèle (jrxml) et retourne un objet JasperDesign.
- JasperCompileManager : compile un objet JasperDesign pour renvoyer un objet JasperReport
- JasperFillManager : rempli un objet JasperReport (ou un fichier .jasper directement) avec la source de données pour retourner un objet JasperPrint
- JasperPrintManager/JasperExportManager : imprime (via la boite de dialogue du système) ou exporte le rapport dans le format choisi
On peut donc faire l'analogie entre les étapes de la génération de rapports et les classes Java avec le schéma suivant :
Utilisation des classes Java dans la génération de rapports
Il faut savoir qu'il n'est pas indispensable de réaliser toutes les étapes dans le code Java utilisant la librairie JasperReports. En effet, iReport Designer par exemple, permet d'obtenir directement un rapport compilé (.jasper). Ainsi, il est possible dans votre application Java de ne pas utiliser les classes JRXmlLoader, JasperDesign, JasperCompileManager mais d'utiliser directement un objet JasperPrint obtenu par le remplissage avec la classe JasperFillManager d'un modèle compilé