Java : générer rapport fais avec birt
RésoluJ'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
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.
-
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. -
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
-
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 -
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
-
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 -
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.
-
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 -
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 -
ok.
Mais ya pas un moyen dans eclipse pour voir la liste des packages??
J'aimerai vérifier, si ils y sont. -
ContributeurNon normalement les packages sont déjà préinstallés dans Eclipse.
-
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!!) -
Contributeur2 ou 3 posts au dessus j'ai mis le lien que j'ai téléchargé, et le tien pour MAC OsX
-
dans lequel lien?? celui que tu as télécharger ou le mien??
Dans ton dossier, il se trouve ou??
Cordialement -
ContributeurNormalment ils sont dans la version pour le lien que je t'ai donné
-
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?? -
ContributeurHmmm bonne question :)
-
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 -
ContributeurJ'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 -
ok.
Merci beaucoup pour ton aide. -
ContributeurJe télécharge la même version je te dis si je trouve.
- 1
- 2