Java : générer rapport fais avec birt

Résolu
Bonjour,

J'ai réalisé un rapport avec Birt sous eclipse, et je souhaiterai par une page Java, exécuter ce rapport.

Comment puis-je faire??

Merci d'avance.
Configuration: Mac OS X
Firefox 3.0.6

32 réponses

Résumé de la discussion

Plusieurs utilisateurs cherchent à exécuter un rapport BIRT créé sous Eclipse à partir d'une page Java, notamment sur Mac OS X, et rencontrent des difficultés liées à l'intégration du moteur de reporting. La meilleure réponse propose une approche code-propre, démarrant le moteur BIRT, ouvrant le fichier .rptdesign, exécutant le rapport puis générant un fichier HTML via un render task. Elle détaille notamment l'utilisation d'EngineConfig avec setBIRTHome, Platform.startup, la récupération du rapport .rptdesign puis la génération du .html et du fichier .rptdocument grâce à IRunTask et IRenderTask. En cas de problème, certains échanges suggèrent de vérifier la compatibilité des packages BIRT et Eclipse, notamment les bundles macOS, et d'assurer que les dépendances telles que les fichiers org.eclipse.report.model soient présents.

Bobot (l’IA à votre service)
  1. Bonjour,

    on ne donne pas le nom du rapport que tu as généré avec birt,j'ai essayé ton code mais ça ne marche pas pour moi.

    Merci.
    1. J'ai réussit!!!!!!!

      Voici le code pour ceux que cela intérésse :
      			 	  try 
      				  {
      			 		 	System.out.println("Lancement du moteur de génération");
      						// Lancement du moteur de génération
      						EngineConfig config = new EngineConfig();
      						config.setBIRTHome("/Applications/eclipse/birt-runtime-2_3_1/ReportEngine");
      						Platform.startup(config);
      						IReportEngineFactory factory = (IReportEngineFactory) Platform
      							.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
      						IReportEngine engine = factory.createReportEngine(config);
      						
      						System.out.println("Récupération du report (.rptdesign)");
      						// Chemin ou se trouve le report
      						String chemin = "/Users/ingencys/Documents/workspace/LesRapports/Rapport_DP3/Rapport_Article";
      						
      						// Récupération du rptDesign 
      						IReportRunnable design = engine.openReportDesign(chemin+".rptdesign");
      								
      						System.out.println("Exécution et génération du report en reporting document (.rptdocument)");
      						// Exécution 
      						IRunTask runTask = engine.createRunTask(design);
      						runTask.run(chemin+".rptdocument");
      								
      						System.out.println("Récupération du reporting document");
      						// Récupération du rptDocument 
      						IReportDocument doc = engine.openReportDocument(chemin+".rptdocument");
      						   
      						System.out.println("Génération du fichier html");
      						// Rendu 
      						IRenderTask renderTask = engine.createRenderTask(doc);
      						 
      						IRenderOption option = new RenderOption();
      						option.setOutputFileName(chemin+".html");	// Nom du fichier de sortie
      						option.setOutputFormat("html");		// Format du fichier de sortie
      						 
      						renderTask.setRenderOption(option);	// Chargement du fichier
      						renderTask.render();			// Création du fichier	
      
      						process = runtime.exec(new String[]{"open", chemin +".html"});
      						
      				 }
      				 catch(BirtException ex) 
      				 {
      						ex.printStackTrace();
      				 }


      Merci à tous pour votre aide
      1. et oui me revoilà,

        donc voilà ou j'en suis :
        public class report
        {
        	public static void main(String[] args) 
        	{
        		Runtime runtime = Runtime.getRuntime();
        		Process process = null;
        		try
        		{
        			process = runtime.exec(new String[]{"open", "/Applications/AdobeReader7.0.5/AdobeReader7_0_5.app"});
        		}
         
        		catch(Exception err)
        		{
        			System.out.println("err = " + err);
        		}  
        	}
        }

        ceci m'ouvre parfaitement Adobe mais comment puis-je faire pour ouvrir mon fichier pdf??

        Merci d'avance
        1. bonjour,

          je m'en sors vraiment pas avec le code ci-dessus.

          Après quelque recherche j'ai trouvé un code qui me permette d'ouvrir directement un code pdf, le voici :
          public class report {
          
          	/**
          	 * @param args
          	 */
          	public static void main(String[] args) 
          	{
          		String commande = "/Applications/AdobeReader7.0.5/AdobeReader7.0.5.app" + "/Contents/Rapport_Article.pdf"; 
          		
          		Runtime runtime = Runtime.getRuntime();
          		Process process = null;
          		try
          		{
          			process = runtime.exec(commande);
          		}
          
          		catch(Exception err)
          
          		{
          		System.out.println("err = " + err);
          		}  
          
          	}
          
          }
          


          mais voici l'erreur que cela me génère :
          err = java.io.IOException: /Applications/AdobeReader7.0.5/AdobeReader7.0.5.app/Contents/Rapport_Article.pdf: cannot execute

          Que puis-je faire??

          Cordialement
          1. En fait, j'ai décidé de garder à peu prêt la même méthode qu'avant sauf que j'ai modifié quelque truc.

            Voici le code obtenu :
            import org.eclipse.birt.core.exception.BirtException;
            import org.eclipse.birt.core.framework.Platform;
            import org.eclipse.birt.report.engine.api.EngineConfig;
            import org.eclipse.birt.report.engine.api.IReportEngine;
            import org.eclipse.birt.report.engine.api.IReportEngineFactory;
            import org.eclipse.birt.report.engine.api.IReportRunnable;
            import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
            
            
            public class LancementRapport {
            
            	/**
            	 * @param <Engine>
            	 * @param <IReportRunnable>
            	 * @param args
            	 * @throws IOException 
            	 */
            	public static void main(String[] args)
            	{
            		try 
            		{
            			EngineConfig config = new EngineConfig();
            			config.setBIRTHome("/Applications/eclipse/birt-runtime-2_3_1/ReportEngine");
            			Platform.startup(config);
            			IReportEngineFactory factory = (IReportEngineFactory) Platform
            				.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
            			IReportEngine engine = factory.createReportEngine(config);
            			
            			IReportRunnable design = null;
            			design = engine.openReportDesign("/Applications/eclipse/Eclipse.app/Contents/MacOS/ =/Users/ingencys/Documents/workspace/Les rapports/Rapport_DP3/Rapport_Article.rptdesign");
            		 
            		IRunAndRenderTask task = engine.createRunAndRenderTask(design);
            			
            				task.run();
            				
            		}
            		catch(BirtException ex) 
            		{
            			ex.printStackTrace();
            		}
            	}
            }
            


            et voici l'erreur que j'obtiens lorsque j'exécute
            :
            26 févr. 2009 17:12:33 org.eclipse.birt.report.engine.api.impl.RunAndRenderTask doRun
            GRAVE: An error happened while running the report. Cause:
            java.lang.NullPointerException
            at org.eclipse.birt.report.engine.api.impl.EngineTask.createContentEmitter(EngineTask.java:1165)
            at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:94)
            at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:72)
            at LancementRapport.main(LancementRapport.java:34)
            org.eclipse.birt.report.engine.api.EngineException: Error happened while running the report
            at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:167)
            at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:72)
            at LancementRapport.main(LancementRapport.java:34)
            Caused by: java.lang.NullPointerException
            at org.eclipse.birt.report.engine.api.impl.EngineTask.createContentEmitter(EngineTask.java:1165)
            at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:94)
            ... 2 more

            Quelqu'un a une idée??

            Merci d'avance
            1. Bonjour,

              Je voit vraiment pas comment régler mon problème.

              Une petite question qui me passe par la tête : comment on peux faire pour ouvrir un rapport en pdf via du code java??
              Pour cela, as t-on besoin des fichiers qui me pose problème??

              Cordialement.
              1. bonjour,

                hier soir, j'ai essayé de mettre le code sur un birt qui se situe sur un autre PC qui est lui sous Windows XP et malheureusement j'ai toujours les mêmes erreurs.

                Quelqu'un a une idée pour régler mon problème??

                Merci d'avance
                1. Je souhaiterais savoir si quelqu'un sait dans quel package appartienne les fichier suivant :
                  import org.eclipse.birt.core.framework.Platform;
                  import org.eclipse.birt.report.model.api.CellHandle;
                  import org.eclipse.birt.report.model.api.DesignConfig;
                  import org.eclipse.birt.report.model.api.DesignElementHandle;
                  import org.eclipse.birt.report.model.api.ElementFactory;
                  import org.eclipse.birt.report.model.api.GridHandle;
                  import org.eclipse.birt.report.model.api.IDesignEngine;
                  import org.eclipse.birt.report.model.api.IDesignEngineFactory;
                  import org.eclipse.birt.report.model.api.ImageHandle;
                  import org.eclipse.birt.report.model.api.LabelHandle;
                  import org.eclipse.birt.report.model.api.ReportDesignHandle;
                  import org.eclipse.birt.report.model.api.RowHandle;
                  import org.eclipse.birt.report.model.api.SessionHandle;
                  import org.eclipse.birt.report.model.api.activity.SemanticException;


                  car j'ai trouvé les packages, mais j'aimerai voir si ce package est dans la liste.
                  Pour voir la liste des packages, je fais : HELP -> Software Updates.

                  Merci d'avance
                  1. ok.

                    Mais ya pas un moyen dans eclipse pour voir la liste des packages??

                    J'aimerai vérifier, si ils y sont.
                    1. Contributeur
                      Non normalement les packages sont déjà préinstallés dans Eclipse.
                      1. Oui j'ai vu le lien.

                        Mais le dossier des fichiers dont j'ai besoin (org.eclipse.report.model...) se trouve ou dans le dossier téléchargé??

                        (je vais essayer de les reprendre et de les réinsérer même si j'y croit peu!!)
                        1. Contributeur
                          2 ou 3 posts au dessus j'ai mis le lien que j'ai téléchargé, et le tien pour MAC OsX
                          1. dans lequel lien?? celui que tu as télécharger ou le mien??

                            Dans ton dossier, il se trouve ou??

                            Cordialement
                            1. Contributeur
                              Normalment ils sont dans la version pour le lien que je t'ai donné
                              1. je sais, je sais, j'ai toujours des bonnes questions!! :)

                                Bon restons sérieux!! Et ces fichiers, il se télécharge pas seul??

                                Ou si tu m'envoie les fichiers dont j'ai besoin, il seront compatible ou pas??
                                1. pour faire mes rapports... je n'es eu aucun souci mais c'est pour les ouvrir via du code java.

                                  Comment je peux faire alors??

                                  Cordialement
                                  1. Contributeur
                                    J'ai téléchargé cette version :

                                    http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-reporting-ganymede-SR1-win32.zip

                                    Celle-ci pour toi : http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-reporting-ganymede-SR1-macosx-carbon.tar.gz

                                    Et dedans j'ai bien les packages pour Birt.

                                    J'ai déjà testée eclipse là dessus, et je n'ai jamais eu de souci ni à installer autre chose que Eclipse lui même
                                    • 1
                                    • 2