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

JSF Java Discussion :

retourner en reponse un objet pdf déja créé


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 11
    Points
    11
    Par défaut retourner en reponse un objet pdf déja créé
    dans la partie generation des etats (facture, bon de reception,...) de mon application réalisée en jsf. je me sert de l'API iText qui permet de generer des documents PDF.
    en click sur un bouton imprimer , la methode appelé s'occupe de remplir le doc pdf qui va etre stocker dans un repertoir que je specifie.
    le probleme c'est je veux que ce document créé soit retourner en reponse et que ca s'affiche dans le browser de l'utilisateur.
    si quelqu'un a déja travailler avec cet API et pourra m'aider

  2. #2
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Points : 97
    Points
    97
    Par défaut
    Globalement ca peut se presenter de la facon suivante
    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
    23
    24
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     response.setContentType( "application/pdf" );
     
    		Document document = new Document(PageSize.A4.rotate());
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		try {
    			PdfWriter.getInstance(document, baos);
    		} catch (DocumentException e) {
    			e.printStackTrace();
    		}
    		document.open();
                    ....
                    .//ajouter ici les données que vous voulez mettre dans le document
                    ....
     
                   document.close();
    		response.setContentType("application/pdf");
    		response.setContentLength(baos.size());
    		ServletOutputStream out = response.getOutputStream();
    		baos.writeTo(out);
    		out.flush();
     
    }

    Un exemple complet qui marche
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		HttpSession session=(HttpSession)(request.getSession(true));
    		String codeClasse=(String)session.getAttribute("codeClasse");
    		String codePeriode=(String)session.getAttribute("codePeriode");
    		CalculateurMoyenne calculator=new CalculateurMoyenne();
    		calculator.calculerMoyennes(codeClasse, codePeriode);
    		//Nombre de matiere
    		int nbreMatiere=calculator.getNbreMatiere()+2;
     
    		response.setContentType( "application/pdf" );
     
    		Document document = new Document(PageSize.A4.rotate());
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		try {
    			PdfWriter.getInstance(document, baos);
    		} catch (DocumentException e) {
    			e.printStackTrace();
    		}
    		document.open();
    		try {
     
    			PdfPTable table = new PdfPTable(nbreMatiere);
    			PdfPCell cell = new PdfPCell(new Paragraph("Recapitulatif des notes"));
    			cell.setColspan(nbreMatiere);
    			Enumeration it=calculator.getMoyennesFinales().elements();
    			boolean afficherEntete=false;
    			while (it.hasMoreElements()){
    					MoyenneAdaptateur ma=(MoyenneAdaptateur)it.nextElement();
     
    					if (afficherEntete==false){
    						//Afficher l'ente
    						Enumeration enumMatiereEntete=ma.getMoyennesMatieres().elements();
    						table.addCell(" ");
    						while (enumMatiereEntete.hasMoreElements()){
    							Moyenne moyenne=(Moyenne)enumMatiereEntete.nextElement();							
    							table.addCell(moyenne.getNiveauMatiere().getMatiere().getCode());																				
    						}
    						table.addCell("Moyenne");
    						afficherEntete=true;
    					}
     
    					Enumeration enumMatiere=ma.getMoyennesMatieres().elements();
    					table.addCell(ma.getEleve().getNom()+" "+ma.getEleve().getPrenom());
    					while (enumMatiere.hasMoreElements()){
    						Moyenne moyenne=(Moyenne)enumMatiere.nextElement();
    						table.addCell(Double.toString(moyenne.getMoyenne()));
     
    					}
    					table.addCell(Double.toString(ma.getMoyenneGenerale()));
    					afficherEntete=true;
     
    			}
     
    			document.add(table);
    		} catch (DocumentException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		document.close();
    		response.setContentType("application/pdf");
    		response.setContentLength(baos.size());
    		ServletOutputStream out = response.getOutputStream();
    		baos.writeTo(out);
    		out.flush();
     
     
     
     
     
     
     
     
     
    	}
    J'espere que ca va t'aider

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    c'est ce que je cherchai exactement, ca marche tres bien et ca résoud mon probleme comme ca je pourrai changer la reponse en pdf. mais avant je dois récuperer le facesExternal pour avoir l'objet response parceque je travail en jsf.
    merci beacoup

Discussions similaires

  1. insertion objet pdf
    Par bargougui86 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/04/2008, 10h50
  2. retourner une paire d'objets.
    Par igor24 dans le forum Langage
    Réponses: 5
    Dernier message: 25/03/2008, 11h56
  3. [Debutant] Fichier WSDL : Retourner un document de type PDF
    Par mesk93 dans le forum Services Web
    Réponses: 2
    Dernier message: 30/10/2006, 14h54
  4. methode qui retourne une liste d'objets du meme type
    Par anoukhan dans le forum Oracle
    Réponses: 8
    Dernier message: 12/01/2006, 18h38
  5. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11

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