JasperViewer sur la machine serveur et non pas sur la machine client [Résolu]

Signaler
Messages postés
45
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
9 février 2011
-
Messages postés
45
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
9 février 2011
-
Bonjour à tous, j'espère que quelqu'un pourrait m'aider avec cet bug ...
pourquoi si je veux générer un état sur un machine client le visionneur de JasperViewer apparait sur la machine du serveur et non pas sur la machine du client ?
j'utilise le code suivant:
 String webRoot = servletContext.getRealPath("/COMPTA");
 fileXml = new File(webRoot + "\\reports\\balance_generale.jrxml");
 JasperDesign jasperDesign = JRXmlLoader.load(fileXml);
 JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, model, connection);
 JasperViewer.viewReport(jasperPrint, false);
 JasperExportManager.exportReportToPdfFile(jasperPrint, par.getType_rapport() + ".pdf");


merci d'avance.

5 réponses

Messages postés
45
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
9 février 2011

salut
la ligne suivante
response.addHeader("Content-disposition", "attachment;filename=balance_generale.pdf");

et écrite pour afficher la boite de dialogue si je la supprimé ca marche comme je veux
il reste un petit problème c'est que le nom de rapport prend par défaut le titre de la page jsp.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
103
Salut,

C'est tout à fait normal dans un contexte J2EE : le code est exécuté au niveau serveur, il génère donc le pdf au niveau du serveur, pour le rendre accessible au niveau du client, il te suffit de retourner le fichier pdf plutôt que de faire une redirection vers une page jsp par exemple.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
45
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
9 février 2011

salut merci pour votre réponse
si je comprend bien "retourner le fichier pdf " :
ce code me permet de générer le rapport et d'afficher une boite de dialogue(de Firefox) pour enregistre ou ouvrir le rapport généré .mais je veut quant je cliquer si le bouton Generer le rapport s'ouvre directement sans passer par la boite de dialogue .
 String webRoot = servletContext.getRealPath("/COMPTA");
 fileXml = new File(webRoot + "\\reports\\balance_generale.jrxml");
 JasperDesign jasperDesign = JRXmlLoader.load(fileXml);
 JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);   
 byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, model, connection);
 HttpServletResponse response = (HttpServletResponse)    
 context.getExternalContext().getResponse();
 response.setContentType("application/pdf");
 response.setHeader("Content-disposition", "inline");
 //Pour afficher une boîte de dialogue pour enregistrer le fichier sous
 response.addHeader("Content-disposition", "attachment;filename=balance_generale.pdf");
 response.setContentLength(bytes.length);
 response.getOutputStream().write(bytes);
 response.setContentType("application/pdf");
 context.responseComplete();

y'a t il un moyen de le faire?
et merci .
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
103
Salut,

Pas en pur html, il te faut passer par un plugin au niveau du navigateur, par exemple :
http://joliclic.free.fr/html/object-tag/object-application.html

Mais ca ne marche que si un plugin pdf est installé pour le navigateur.

Sinon y'a cà :
http://www.swftools.org/

Mais je suis pas sûr que ca s'applique à ton cas.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
45
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
9 février 2011

Salut,
merci pour votre réponse je doit le tester tout d'abord.
mais je croit que sera poser quelques problème pour un client qui n'a pas le plugin ,ou qui utilise autre navigateur.