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 :

Pb affichage reponse PDF


Sujet :

Servlets/JSP Java

  1. #1
    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 Pb affichage reponse PDF
    Bonjour
    J'ai céé un fichier pdf enregistré sous /tmp/planning.pdf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Pool_Edition_PDF {
      private static final String BASE_DIRECTORY = "/tmp";
     
       public static void main(...
       ....
       file = new File(BASE_DIRECTORY+"/planning.pdf");
       ....
       session.setAttribute("lien1", BASE_DIRECTORY+"/planning.pdf");
    }
    }
    le fichier est bien stcké dans le rep tmp
    pour la réponse j'ai écris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {if(ch.equals("2302"))
    	//affichage d'un PDF
    	{urlMain = session.getAttribute("lien1").toString();
    	 response.sendRedirect(urlMain);}
    mais le pb c'est que l'erreur 404 m'est retournée:La ressource demandée (/tmp/planning.pdf) n'est pas disponible.


    Où est le pb?
    Merci

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Tu ne peux pas spécifier une arborescence en dehors de la partie Web.

    Alors tu as deux possibilités :

    1) copier le PDF dans la partie Web.

    2) injecter le contenu du fichier dans le HttpServletResponse :

    - lire le fichier PDF en Java (par exemple dans un byte[] s'il n'est pas trop volumineux),
    - spécifier le type de réponse (ça doit ressemble à ça) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment; filename=monFichier.pdf");
    - écrire le contenu du fichier (byte[]) dans l'HttpServletResponse

  3. #3
    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
    Donc suivant vos directives j'ai écris ceci mais les pages sont vides:
    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
     
    if(ch.equals("2302"))
    	//affichage d'un PDF
    	{urlMain = session.getAttribute("lien1").toString();
    	String fichier = "planning.pdf";  //request.getParameter("fichier");
    	response.setContentType ("application/pdf");
    	response.setHeader ("Content-Disposition", "attachment; filename=\""+fichier+"\"");
    	java.io.PrintWriter out = response.getWriter();
    	try
    		{InputStream ips=new FileInputStream("/tmp/Pool.pdf");
    		InputStreamReader ipsr=new InputStreamReader(ips);
    		BufferedReader br=new BufferedReader(ipsr);
    		String ligne="";
    		while ((ligne=br.readLine())!=null)
    			{out.println(ligne);}
    	}catch (Exception e){e.printStackTrace();}
    je pense que ça vient de la variable string qui ne convient pas.
    Vous en pensez quoi?
    merci

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    as-tu des exceptions qui sont déclenchées?

  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
    Non pas d'exceptions
    Le PDF fait 24K et comporte 3 pages

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    en fait, il faut lire le pdf en binaire et non en flux String.
    un truc comme ça devrait fonctionner :
    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
    21
    22
    String fichier = "planning.pdf"; // request.getParameter("fichier");
    response.setContentType ("application/pdf");
    response.setHeader ("Content-Disposition", "attachment; filename=\""+fichier+"\"");
    OutputStream os = response.getOutputStream();
    try {
    	InputStream ips = new FileInputStream("/tmp/Pool.pdf");
    	InputStreamReader ipsr = new InputStreamReader(ips);
     
    	byte buffer[] = new byte[512 * 1024];
    	int nbLecture;
    	while ((nbLecture = ips.read(buffer)) != -1) {
    		os.write(buffer, 0, nbLecture);
    	}
     
    } catch (Exception e) {
    	e.printStackTrace();
    } finally {
    	try {
    		os.close();
    	} catch (Exception e) {
    	}
    }

  7. #7
    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
    Ok testé nickel merci

    Par contre si je veux afficher le PDF dans une poup avec un open.window je fait comment?
    Je n'ai pas compris le mécanisme puisque le doc pointé sera une adresse a moins que ?

  8. #8
    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
    J'ai trouvé sur le site sun la solution permettant d'ouvrir directement le pdf:

    http://forum.java.sun.com/thread.jsp...sageID=2665558

  9. #9
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Par défaut
    Bonjour, je tente moi aussi d'ouvrir un fichier pdf dans une fenetre IE. Est-il possible d'ouvrir ce "fichier" sans spécifier un filename ? Car moi je reçois le contenu d'un pdf en byte array d'une autre application.

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

Discussions similaires

  1. [PHP 5.2] affichage de pdf (ou liste d'un repertoire) situé sur un autre server
    Par livinho38 dans le forum Langage
    Réponses: 1
    Dernier message: 07/05/2009, 12h00
  2. Qualité des images à l'affichage du PDF
    Par papal02 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 0
    Dernier message: 08/06/2008, 15h36
  3. Affichage document PDF ou autre avec FORMS
    Par JeffHam dans le forum Forms
    Réponses: 2
    Dernier message: 19/09/2007, 22h53
  4. Affichage de PDF en JSP
    Par faressam dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/06/2007, 20h37
  5. Affichage fichier pdf
    Par yousfi.z dans le forum Documents
    Réponses: 4
    Dernier message: 29/05/2007, 10h26

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