IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Afficher PDF dans une nouvelle page avec Struts


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut Afficher PDF dans une nouvelle page avec Struts
    Bonjour,

    Je souhaite ouvrir un pdf dans jsp(une nouvelle jsp) en passant par ActionStruts.

    J'ai cherché sur google mais je n'ai pas trouvé un bon exemple qui explique cela pas-à-pas. Je vous remercie d'avance si vous pouvez m'indiquer un bon tutoriel un exemple.

    (avec struts 1)


    Merci.


    Bien Cordialement, Luis

  2. #2
    Membre éprouvé Avatar de Lician
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Mars 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2011
    Messages : 93
    Par défaut
    Bonjour,

    Ton pdf doit-il avoir une forme particulière?
    Tu peux utiliser Crystal Clear Report pour la template et le .jar crystal clear qui lui est associé par la suite.

    Sinon tu as aussi ce lien qui me semble pas mal pour tout type de documents...

    http://www.vaannila.com/struts/strut...example-1.html

    Bon courage!

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Et bien, imaginons que nous générons un pdf avec Itext et que ensuite on le li byte par byte et on affiche dans une nouvelle fenêtre.

    Merci.

  4. #4
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Il te suffit de remplir le flux de réponse de la servlet avec tes datas.
    Il peut être judicieux de remplir qqs éléments du header comme le contentType ou le Content-Disposition.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Oui comme ce ci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     response.setContentType ("application/pdf");
    		 response.setHeader ("Content-Disposition", "attachment; filename=\""+fichier+"\"");

    J'ai un exemple dans la FAQ de struts mais je ne comprend certaine chose:

    voici l'exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <html:link page="/openpdf.do"
    name="pdfForm"
    property="pdfName"
    target="_blank">
    <html:img src="./images/PDF.gif" border="0" alt="View PDF"/>
    </html:link>
    Dans la méthode execute de l'Action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ByteArrayOutputStream bos = new ByteArrayOutputStream(5000);
    // Remplir ici votre bos avec le flux du PDF
    httpServletResponse.setContentType("application/pdf");
    httpServletResponse.setContentLength(bos.size());
    OutputStream os = httpServletResponse.getOutputStream();
    os.write(bos.toByteArray(), 0, bos.size());
    os.flush();
    os.close();
    return null;

    Donc je pense que dans le fichier struts-config.xml


    je dois avoir un bean déclarer comme çà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form-bean name="pdfForm" type="org.apache.struts.validator.DynaValidatorForm"/>
    et dans une autre action de struts avoir mit une propriété nommée pdfName dans la session , ça pourrait être l'array de bytes, non?

    Pour que je puisse faire par la suite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    os.write(bos.toByteArray(), 0, bos.size());
    os.flush();
    os.close();

    Merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Bonjour,

    Finalement ça marche, je ne sais pas si c'est la meilleur façon, je vous montre le code:


    Dans la JSP j'ai éliminé la référence au form et à la propriété car c'est ma page initial et je ne suis pas passé par une autre action pour la mettre en session.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <html:link page="/ajaxAction.do"
    		   target="_blank">
    	<html:img src="images/pdf.jpg" border="0" alt="View PDF"/>
    </html:link>
    Dans la méthode execute de l'Action :


    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
    	 ByteArrayOutputStream bos = new ByteArrayOutputStream();
    	// Remplir ici votre bos avec le flux du PDF
    	 InputStream ips = new FileInputStream("C:/pdf/Pool.pdf");
     
    	 byte buffer[] = new byte[512 * 1024];
    		int nbLecture;
    		while ((nbLecture = ips.read(buffer)) != -1) {
    			bos.write(buffer, 0, nbLecture);
    		}
     
    		response.setContentType("application/pdf");
    		response.setContentLength(bos.size());
    		OutputStream os = response.getOutputStream();
    		os.write(bos.toByteArray(), 0, bos.size());
    		os.flush();
    		os.close();
    et voilà le pdf s'ouvre dans une nouvelle fenêtre sur IE et un nouvel onglet sur FireFox, J'avoue ne pas contrôler ce genre de Phénomène .


    Je ne ferme pas encore ce thème, je vais attendre des suggestions.



    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Comment afficher le resultat dune BDD avec javascript dans une nouvelle page
    Par modemo2005 dans le forum Langages
    Réponses: 1
    Dernier message: 16/12/2014, 19h24
  2. ouvrir un lien dans une nouvelle page avec un select
    Par laurentSc dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/01/2013, 17h09
  3. Ouvrir un lien dans une nouvelle page avec un select sans javascript
    Par laurentSc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 22
    Dernier message: 22/12/2012, 16h39
  4. Afficher PDF dans une page web
    Par Ishida dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/08/2008, 23h26
  5. Afficher un lien dans une nouvelle page
    Par newmar dans le forum Struts 1
    Réponses: 4
    Dernier message: 26/05/2008, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo