1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2017
    Messages : 2
    Points : 3
    Points
    3

    Par défaut Comment télécharger un pdf avec une Servlet?

    Bonjour tout le monde,

    Dans le cadre d'un projet, il à été convenu avec le responsable technique de la génération d'un pdf via une Servlet. Ce pdf contient des informations de tours de garde des gardiens de nuit d'une entreprise (Nom, Horaires, etc).
    J'ai déjà commencé à coder la Servlet mais là je sèche et malgré avoir parcouru beaucoup de forum je n'ai toujours pas trouvé comment me débloquer.
    Voici le code de ma servlet

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    @SuppressWarnings("serial")
    @WebServlet(description = "Retourne le pdf des tours de services du mois choisi", urlPatterns = { "*.xhtml" })
    @FieldDefaults(level = AccessLevel.PRIVATE)
    public class GenererPDFServlet extends HttpServlet
    {
     
    	String chemin = "#{resource['pdf:planning.pdf']}";
     
    	FacadeTourDeService facadeTourDeService;
     
    	List<TourDeService> listeTourService = facadeTourDeService.getDao().readAll();
     
    	/**
             * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
             *      response)
             */
    	protected void service(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException
    	{
     
    		try
    		{
    			Document pdf = this.genererPDF(listeTourService);
    		} catch (DocumentException e)
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    		response.setContentType("application/octet-stream");
     
    		OutputStream out = response.getOutputStream();
     
     
     
    	}
     
    	private Document genererPDF(List<TourDeService> lstTour) throws DocumentException, IOException
    	{
    		FileOutputStream fos = this.getFileOutputStream(chemin);
     
    		Document document = this.getDocument(fos);
     
    		document.add(new Paragraph(this.genererLignesPDF(lstTour)));
     
    		document.close();
     
    		fos.close();
     
    		return document;
    	}
     
    	private FileOutputStream getFileOutputStream(String chemin) throws FileNotFoundException
    	{
    		File file = new File(chemin);
     
    		FileOutputStream fos = new FileOutputStream(file);
     
    		return fos;
    	}
     
    	private Document getDocument(FileOutputStream fos) throws DocumentException
    	{
    		Document document = new Document();
     
    		PdfWriter.getInstance(document, fos);
     
    		document.open();
     
    		return document;
    	}
     
    	private String genererLignesPDF(List<TourDeService> lstTourDeService)
    	{
    		StringBuilder sb = new StringBuilder();
     
    		for (TourDeService tourDeService : lstTourDeService)
    		{
    			sb.append(tourDeService.getPersonnel().getNom());
    			sb.append(": ");
    			sb.append(tourDeService.getTypeTourService());
    			sb.append("du ");
    			sb.append(tourDeService.getDateHeureDebut());
    			sb.append("au ");
    			sb.append(tourDeService.getDateHeureFin());
    			sb.append("\n");
    		}
     
    		return sb.toString();
    	}
     
    }


    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    juillet 2013
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2013
    Messages : 163
    Points : 260
    Points
    260

    Par défaut

    Bonjour,
    le choix d'une servlet est-elle une nécessite ou parce qu'il était difficile de faire autrement ?
    Vu que tu es en JSF, l'excellente librairie Omnifaces te permet de répondre à ton besoin simplement avec la méthode sendFile : http://omnifaces.org/docs/javadoc/2.....File-boolean-
    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    byte[] bytes = genererPDF(List<TourDeService> lstTour); // dans mon utilisation je retournais un tableau de bytes, 
    try {
    	Faces.sendFile(bytes, "mondocument.pdf", true);
    } catch (IOException e) {
    	logger.error(e.getMessage());
    }
    tout simplement...

    J'avais un projet JSF où comme toi j'avais dût créer une servlet pour permettre de télécharger un PDF (que je peux retrouver si vraiment tu dois passer par une servlet) puis j'ai switché sur cette librairie qui m'a grandement aidé.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2017
    Messages : 2
    Points : 3
    Points
    3

    Par défaut

    Bonjour,

    Merci de votre réponse. J'ai eu un rendez vous avec le responsable technique et au final je vais utiliser Primefaces. J'ai déjà trouvé le composant qui me fallait. J'ai testé sur un code à part, il ne me reste plus qu'à l'intégrer.

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

Discussions similaires

  1. [PHP 5.0] Comment Télécharger les images dans une base de donne MySQL avec PHP
    Par codeweb dans le forum Fichiers
    Réponses: 3
    Dernier message: 15/10/2012, 16h19
  2. Réponses: 1
    Dernier message: 23/03/2011, 12h26
  3. Réponses: 2
    Dernier message: 19/12/2005, 14h15
  4. [Servlet]pdf sur le disque, l'afficher avec une servlet
    Par canou94 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 08/12/2005, 16h11
  5. Réponses: 2
    Dernier message: 29/03/2004, 14h44

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