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 :

ouverture/forward vers un fichier pdf


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 40
    Points
    40
    Par défaut ouverture/forward vers un fichier pdf
    Salut,
    j'utilise FOP pour generer un pdf a partir d'un xml, jusqu'ici tout va bien.
    le but est d'associer maintenant ce traitement a un bouton "imprimer" dans la jsp.
    mon probleme est que je veux que quand on click sur le bouton, le navigateur propose la fenetre "save as", "ouvrir avec"... (pas de runtime, je veux que ca marche avec tous les OS).
    j'ai essayé un forward , response.sendRedirect("./test.pdf");
    mais j'ai cette erreur :
    java.lang.IllegalStateException: Impossible d'utiliser faire-suivre (forward) après que la réponse ait été envoyée.

    merci

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Cela veut dire que tu as déjà écrit dans le flux de réponse de ta servlet : tu ne peux donc pas rediriger vers une nouvelle page...

    Utilises plutôt FOP pour écrire directement dans le flux de réponse plutôt que de créer un fichier temporaire...

    Enfin pour signaler au navigateur qu'il s'agit d'une fichier PDF, il suffit d'utiliser le code suivant avant d'envoyer la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setContentType("application/pdf");
    a++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    oui, je pense, et je crains que cela ne m'est pas accessible, je peux pas le changer!!!je gere q'une partie du MVC.
    mais est ce que ta solution va ouvrir le pdf directement dans le browser?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Pour celà il y a la propriété Content-Disposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment; filename=MonFichier.pdf");
    response.getOutputStream().write(/*fichier FOP*/);
    return null;
    "attachement" : il va ouvrir une fenêtre pour enregistrer
    "inline" : il va afficher dans la page

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    ce code est a utiliser lors de la conversion xml->pdf
    ou aprés la création du pdf?
    si c'est la premiere reponse, je ne vois pas trop comment l'integrer a mon code FOP.

    Merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    résolu,
    pour partager

    try {
    driver.setOutputStream(out);

    // Setup XSLT
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer(new StreamSource(
    xslt));

    //Fop fop = factory.newFop(MIMEConstants.MIME_PDF, out);

    // Setup input for XSLT transformation
    Source src = new StreamSource(xml);

    // Resulting SAX events (the generated FO) must be piped through to
    // FOP
    Result res = new SAXResult(driver.getContentHandler());

    // Start XSLT transformation and FOP processing
    transformer.transform(src, res);

    pResponse.setContentType("application/pdf");
    pResponse.setHeader("Content-Disposition", "attachment; filename=Contrat.pdf");
    pResponse.setContentLength(out.size());
    pResponse.getOutputStream().write(out.toByteArray());
    pResponse.getOutputStream().flush();

    } finally {
    out.close();
    }

Discussions similaires

  1. Référence vers un fichier pdf
    Par Sarra_LV dans le forum LabVIEW
    Réponses: 6
    Dernier message: 30/07/2014, 10h34
  2. insérer un lien (rattaché) vers un fichier pdf ou doc
    Par devlopassion dans le forum Word
    Réponses: 4
    Dernier message: 07/12/2008, 16h49
  3. [Mail] mail avec lien vers un fichier .pdf
    Par Herode dans le forum Langage
    Réponses: 1
    Dernier message: 27/03/2008, 05h52
  4. créer un lien vers un fichier pdf
    Par pcappell dans le forum WinDev
    Réponses: 5
    Dernier message: 22/05/2007, 14h47
  5. Réponses: 2
    Dernier message: 18/04/2007, 13h27

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