Présentation

BIRT est un projet open source de la fondation Eclipse permettant de réaliser des rapports (ou éditions) sous deux canaux : HTML et PDF. Pour se faire BIRT utilise deux fichiers :
  1. Un fihier de données (XML quelconque)
  2. Un Etat (ou template représentant la forme du rapport) au format rptdesign (propriétaire BIRT
BIRT peut être utilisé de deux façons : sous Eclipse via le plugin permettant de "dessiner" des Etats et générer le rapport et en runtime, dans du code java. Cette dernière méthode ne permet pas de réaliser des etats mais permet de lancer la génération du rapport.


Installation du plugin

le plugin BIRT necessite GEF et EMF (autres plugins Eclipse). je conseille donc d'installer la version All-in-one disponible ici. Sinon la procedure d'installation est décrite ici.

Une fois BIRT installé il est possible de réaliser des etats et de les éditer en HTML, mais pour pouvoir les éditer en PDF il faut suivre les instructions suivantes:
  1. Télécharger le fichier : iText1.3 (pour la génération de pdf)
  2. Le copier à l'emplacement : plugins/org.eclipse.birt.report.engine.emitter.pdf_version/lib/ (plugins étant le répertoire de plugins d'Eclipse).
  3. Redemarrer Eclipse avec un -clean

Et voila le plugin installé.

Installation du Runtime

BIRT fournit aussi une API Java, pour cela il faut
Télécharger le module runtime de BIRT
  1. Le dezipper sur le disque dur
  2. Puis ajouter iTexte1.3 dans le repertoire  ${BIRT_HOME}birt-runtime-2_1_0/ReportEngine/plugins/com.lowagie.itext/lib toujours pour la génération PDF.
  3. La doc pour deployer BIRT est diponible ici
Et voici un petit exemple permettant de générer un rapport PDF avec l'API de BIRT :

 //////////////////////////////////
  // Configuration du moteur BIRT //
  //////////////////////////////////
  String reportEngine = <HomeDuMoteur>;
  EngineConfig config = new EngineConfig( );
  //Home du moteur
  config.setEngineHome(reportEngine);
  log("[Configuration du moteur BIRT]............OK");
       
  //////////////////////////////
  // Moteur de reporting BIRT //
  //////////////////////////////
  ReportEngine engine = new ReportEngine( config );
     
  ///////////////////////////////////
  // Représentation de l'Etat BIRT //
  ///////////////////////////////////
  String etat = <Path de l'Etat>;
  IReportRunnable design=null;
  try {
      design = engine.openReportDesign(etat);
  } catch (EngineException e1) {
      log("[Lecture de l'état BIRT]........FAILED" + e1.getMessage());
  }
  log("[Lecture de l'état BIRT]................OK");

  //////////////////////////////////////////////
  // Tache de creation traitement et de Rendu //
  //////////////////////////////////////////////
  IRunAndRenderTask task = engine.createRunAndRenderTask(design);    
  // Context de rendu
  HTMLRenderContext renderContext = new HTMLRenderContext();
  // S'il y a des images
  renderContext.setImageDirectory("image");
  HashMap contextMap = new HashMap();
  contextMap.put(EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT,renderContext );
  task.setAppContext( contextMap );
  log("[Configuration du moteur de rendu]......OK");

  /////////////////////

  // Option de rendu //
  /////////////////////
  String out = <Path de sortie du fichier PDF>
  HTMLRenderOption options = new HTMLRenderOption();
  //options.setOutputStream(System.out);
  options.setOutputFileName(out);
  options.setOutputFormat("pdf");
  task.setRenderOption(options);
  log("[Configuration du fichier de sortie]....OK");
    
  log("[Début de l'execution de la transfo.]...OK");
  try {
     task.run();
  } catch (EngineException e) {
      log("### Génération du pdf echouée ###\n" + e.getMessage());
  }
  log("### Génération du pdf effectué###");
    
  engine.shutdown();
  log("[Arret du moteur BIRT]............OK");

    

Pour plus d'information voici un article très interressant sur les méthodes de deployement de BIRT http://www.onjava.com/pub/a/onjava/2006/07/26/deploying-birt.html