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

Java Discussion :

[MIME] Changer le type MIME d'un PDF


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 160
    Par défaut [MIME] Changer le type MIME d'un PDF
    Bonjour,

    J'ai un fichier pdf générer automatiquement par une librairie externe (jasper). Lorsque je clique dessus, le pdf s'ouvre dans mon navigateur alors que je souhaiterais qu'on propose son enregistrement.

    J'ai vu qu'il fallait changer un composant du header par "application/octetstream". mais vu que le pdf est généré automatiquement, je n'ai pas accès a la classe qui me permet de faire cette modification.
    quelqu'un aurait-il une solution?

    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par Spiff__ Voir le message
    Lorsque je clique dessus, le pdf s'ouvre dans mon navigateur alors que je souhaiterais qu'on propose son enregistrement.
    Il s'agirait donc d'une application web, qui propose un lien vers un fichier PDF ? Dans ce cas peu importe comment a été généré ton PDF, ce qui compte c'est la réponse de ton application web à l'action "je clique dessus" (un bouton, un lien ?), c'est là qu'on définit l'action à effectuer (affichage direct dans le navigateur ou boîte de dialogue proposant enregistrement/affichage).
    Précise un peu ce que tu fais exactement...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 160
    Par défaut
    Oui il s'agit d'une application web, on clique sur un lien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="rapport.pdf">click ici</a>
    et la c'est reader qui s'ouvre dans la page courante du navigateur. or je souhaiterais avoir la boite de dialogue du navigateur qui propose l'enregistrement.

    Merci.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Je n'ai pas essayé, mais est-ce que la solution suivante ne conviendrait pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="rapport.pdf" type="application/octetstream">click ici</a>
    (je ne sais pas à quel point l'attribut type est standard et implémenté dans les navigateurs...)



    Sinon, plutôt que de donner un lien direct vers le fichier, tu peux mettre un lien vers une page qui se chargera de modifier le type MIME de la réponse avant d'envoyer le fichier (un petit script PHP peut faire l'affaire).



    Et enfin, si ton appli web est une appli Java avec servlets etc, tu peux mettre en place un bouton un peu plus complexe qu'un simple lien mais qui te permettra de mieux maîtriser la réponse envoyée au navigateur.
    Exemple de code trouvé dans une de mes applications, à toi de voir si tu peux t'en inspirer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public String processPage(HttpServletRequest request, HttpServletResponse response) {
    	if (isButtonPressed(request, "Button_CustomerFile")) {
    		ByteArrayOutputStream out = new ByteArrayOutputStream();
    		// on génère le PDF et on le met dans la variable out...
    		response.setContentType("application/pdf");
    		response.setHeader("Content-Disposition", "attachment; filename=FicheClient.pdf;");
    		response.setContentLength(out.size());
    		response.getOutputStream().write(out.toByteArray());
    		response.getOutputStream().flush();
    		response.getOutputStream().close();
    		return REDISPLAY_RESULT;
    	}
    }
    EDIT : C'est un peu vieux dans mon esprit, mais il me semble que c'était le header "attachment" qui forçait l'apparition de la boîte de dialogue.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 160
    Par défaut
    Merci pour ton aide.

    J ai essayer avec le paramètre type mais il n'en veut pas.
    La seconde solution me renvois une erreur, probablement parce que j utilise struts...
    Stack:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    GRAVE: "Servlet.service()" pour la servlet jsp a lanc� une exception
    java.lang.IllegalStateException: "getOutputStream()" a d�j� �t� appel� pour cette r�ponse
    	at org.apache.catalina.connector.Response.getWriter(Response.java:610)
    	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
    	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
    	at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    	at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    Voila je sais pas ce que tu en penses.

Discussions similaires

  1. [PHP 5.3] type mime et fichier magic.mime sans finfo_open
    Par elcoyotos dans le forum Langage
    Réponses: 9
    Dernier message: 19/03/2012, 17h49
  2. Associer un type MIME à une extension.
    Par Olivier_ dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 13/03/2005, 14h48
  3. [type MIME] css généré par php -> probleme
    Par prgasp77 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 23/09/2004, 21h13
  4. [Type MIME] Récupération
    Par Optimus dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 28/06/2004, 11h05
  5. [struts] déterminer le type Mime d'un fichier
    Par k4eve dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/06/2004, 10h28

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