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

Servlets/JSP Java Discussion :

Spécifier nom pdf généré par action iframe


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 52
    Par défaut Spécifier nom pdf généré par action iframe
    Bonjour à toutes et à tous.

    Tout d'abord je vous souhaite à toutes et tous une bonne et heureuse année 2009 et je vous remercie par avance de l'aide que vous pourrez m'apporter.

    Contexte:
    Réalisation d'une page de visualisation de pdf stocké en base de données.

    Environement:
    - Java J2EE jdk 1.5 (struts, spring)
    - Serveur JBoss 4.0.5 en local
    - Serveur de base de données MySQL en local

    Description du problème:
    J'affiche un pdf dans une iframe
    Ce pdf est le résultat d'une action nommée openPdf.do
    Lorsque je clique sur le bouton enregistrer du plugin Acrobat Reader le nom du fichier pdf par défaut est openPdf.pdf au lieu du nom de fichier specifié dans mon action (ex : mon_super_pdf.pdf).

    Question:
    Comment spécifier le nom de ce fichu fichier pdf lorsque je clique sur le bouton enregistrer de la visionneuse Acrobat Reader ?

    Solution actuelle:
    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
     
      String nomPDF = pdf.getDescription() + ".pdf"; // ex : mon_super_pdf.pdf
      response.setContentType("application/pdf");
      response.setHeader("Content-disposition", "inline; filename=\"" + nomPDF + "\"");
     
      OutputStream os = response.getOutputStream();
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
     
      try {
        bos = pdf.getContent();
      } catch(Exception e) {
        cat.error("OpenPdf Exception : " + e.getMessage()); 
        response.sendRedirect("NoPdf.do");
      }
     
      response.setContentLength(bos.size());
     
      os.write(bos.toByteArray(), 0, bos.size());
      os.flush();
      os.close();
    Cela ne fonctionne pas !



    Voila, je pense que vous avez tous les elements pour me venir en aide.

    Bonne journée à toutes et tous.
    Et encore merci d'avance.

    Scarz.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 52
    Par défaut
    Up Up

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 52
    Par défaut
    Personne pour aider un pauvre malheureux développeur qui n'arrive pas à spécifier le nom de son pdf ?



    Merci d'avance.

    Scarz.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 52
    Par défaut
    Up

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Par défaut
    Bonjour
    ne serai ce pas plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setHeader ("Content-Disposition", "attachment; filename=\""+fichier+"\"");

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 52
    Par défaut
    Salut a toi Mengué georges,

    Tout d'abord je te remercie de ta réponse.
    Ensuite, j'ai déjà essayer de mettre attachment à la place de inline mais le problème est que cela engendre le téléchargement du pdf avec une boite de dialogue qui demande "ouvrir" ou "enregistrer sous..." au lieu de le laisser intégré à la page web.

    Voila... encore merci pour ta participation.

    Si vous avez une autre idée, je suis preneur.

    Merci d'avance.
    Scarz.

  7. #7
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Salut je pense avoir la solution à ton problème,

    je devais la poster y a un ti bout de temps puis j'ai zappé

    Pour tout fichier il faut placer dans la response et dans cette l'ordre suivant (bug potentiel D'IE):
    -le content-type (mime type)
    -le content-disposition (nom du fichier)


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


    attachment : permet d'avoir une fenêtre d'invite d'enregistrement du fichier.
    inline : permet l'ouverture direct du document dans le navigateur si celui-ci peut l'ouvrir directement ou appeler le logiciel associé au format du fichier.


    Premier problème rencontré pour le PDF : le nom du document n'est jamais pris en compte en mode inline.
    symptôme : lors de l'enregistrement le nom proposé est celui de la servlet.pdf

    Ce problème se résolu de a manière suivante en modifiant le web.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <servlet>
    		<servlet-name>ServletDocument</servlet-name>
            <servlet-class>com.ft.dit.tipi.openged.servlet.ServletOpenDocument</servlet-class>
    </servlet>
     
    <servlet-mapping>
        	<servlet-name>ServletDocument</servlet-name>
        	<url-pattern >ServletDocument</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
       		<servlet-name>ServletDocument</servlet-name>
        	<url-pattern>/ServletDocument/files/*</url-pattern>
    </servlet-mapping>
    files à été choisi de manière arbitraire et peut être remplacé par ce que l'on veut.

    Pour plus d'explication voir le lien suivant
    http://balusc.blogspot.com/2007/07/fileservlet.html

    Ce second mapping permet d'ajouter en fin de requête le nom du document que l'on souhaite voir apparaître lors de l'enregistrement.

    exemple :

    http://monUrl/ServletDocument?param1=A&param2=B

    devient alors :

    http://monUrl/ServletDocument/files/...am1=A&param2=B

    les paramètres de la servlet peuvent être passer en GET ou POST cela n'a aucune incidence.


    en esperant que ca réponde à tes problèmes

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 52
    Par défaut
    Excellent de chez Excellent.
    Un grand à link256.

    En suivant mot à mot ce qui est inscrit dans ce post, tout fonctionne à merveille.

    Encore merci.
    Et à bientôt pour de nouvelles aventures.

    Scarz.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2009
    Messages : 22
    Par défaut
    Bonjour à tous,

    Je voudrais bien que le nom du PDF s'affiche dans la barre de titre du navigateur. J'ai le même code :

    String nomPDF = pdf.getDescription() + ".pdf"; // ex : mon_super_pdf.pdf
    response.setContentType("application/pdf");
    response.setHeader("Content-disposition", "inline; filename=\"" + nomPDF + "\"");

    Le bon nom du fichier est proposé lors de l'enregistrement, mais la barre de titre ne contient qu'une url codée. J'ai une url fixée du genre http://localhost:8080/ACCES?parm1=a&parm2=b et je ne peux pas modifier cette url

    Je vous remercie d'avance et vous souhaite une bonne soirée

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

Discussions similaires

  1. [FPDF] Envoyer PDF généré par e-mail
    Par enrico83600 dans le forum Bibliothèques et frameworks
    Réponses: 20
    Dernier message: 06/04/2010, 19h48
  2. les fichiers pdf générés par le client se plaçe dans le serveur
    Par john_wili dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 10/03/2009, 17h49
  3. [XSL~FO] Débordement d'image dans pdf généré par FOP
    Par Kamui dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 06/11/2008, 19h23
  4. Taille du fichier PDF généré par report
    Par sebtbo dans le forum Reports
    Réponses: 0
    Dernier message: 04/02/2008, 20h06
  5. Ouvrir un .pdf généré par BIRT (+chart) avec IE
    Par tiboudchou dans le forum BIRT
    Réponses: 1
    Dernier message: 24/08/2006, 09h58

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