salut tout le monde
mon problème est le suivant :
j'utilise BIRT dans une appli J2EE, je configure mon rapport et je l'envoie dans l'outputstream de ma servlet. tout va bien, mais au format html les images du rapport ne s'affiche pas sous mozilla.
lorsque je regarde le code source du rapport html la source des images est de la forme file:/C:/Documents and Settings/ (c'est normal que dans ma servlet les images ne sont pas trouvées). pourtant je lui specifie bien BaseImageURL,mais il prends uniquement l'ImageDirectory pour stocker les images
voici un bout de code ma servlet
et voici le code de mon bean
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HashMap<String, String> map= new HashMap<String, String>(); map.put("typeStat", request.getParameter("typeStat")); map.put("formatRapport",request.getParameter("formatRapport")); map.put("banque",request.getParameter("banque")); map.put("contrat",request.getParameter("contrat")); map.put("dateNaissance1",request.getParameter("dateNaissance1")); map.put("dateNaissance2",request.getParameter("dateNaissance2")); map.put("date1",request.getParameter("date1")); map.put("date2",request.getParameter("date2")); map.put("action",request.getParameter("actionRapport")); EditionRapport er; if(map.get("action").equalsIgnoreCase("AfficheRapport")){ if(map.get("formatRapport").equalsIgnoreCase("pdf")){ response.setContentType("application/pdf"); }else if (map.get("formatRapport").equalsIgnoreCase("xls")){ response.setContentType("Application/x-msexcel"); }else{ response.setContentType("text/html"); } er= new EditionRapport(response.getOutputStream(),request); er.edition(map) ; }else{ //téléchargement } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 public class EditionRapport { private String EngineHome = GestionProperties.getValue("UrlLibBirt"); private String UrlRepRapport = GestionProperties.getValue("UrlRepRapport"); private String UrlRapport = "C:/David/RapportBirt/Rapport_ProdGen.rptdesign"; private ServletOutputStream os; private HttpServletRequest request; public EditionRapport() { } public EditionRapport(ServletOutputStream os, HttpServletRequest request) { this.os = os; this.request = request; } public boolean edition(HashMap<String, String> map) { //boolean RapportEdite = false; IRunAndRenderTask task = null; IReportRunnable design; EngineConfig config = new EngineConfig(); // String URL = rap.getURL(); //String urlRapportEdite = UrlRepRapport + map.get("typeStat") + "." // + map.get("formatRapport"); try { config.setEngineHome(EngineHome); ReportEngine engine = new ReportEngine(config); design = engine.openReportDesign(UrlRapport); task = engine.createRunAndRenderTask(design); task.setParameterValues(map); if (map.get("action").equalsIgnoreCase("AfficheRapport")) { HTMLRenderOption options = new HTMLRenderOption(); System.out.println(this.request.getContextPath()+"/rap/images"); System.out.println(this.request.getSession().getServletContext().getRealPath("/rap/images")); // options.setBaseImageURL(""); options.setOutputFormat(map.get("formatRapport")); options.setBaseImageURL(this.request.getContextPath()+"/rap/images"); options.setImageDirectory(this.request.getSession().getServletContext().getRealPath("/rap/images")); options.setOutputStream(this.os); task.setRenderOption(options); task.run(); task.close(); // RapportEdite = true; } else { // si telechargement } } catch (Exception e) { //RapportEdite = false; System.out.println("voici l'Erreur : " + e.getMessage()); } return true; } }
Partager