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

Spring Boot Java Discussion :

genere pdf avec spring boot


Sujet :

Spring Boot Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut genere pdf avec spring boot
    Salut,

    je cherche à créer un contrôleur avec spring qui me permettra de générer un pdf avec possibilité d'enregistrement.

    J'ai utilisé la librairie itext et j'ai pratiquement réussi. il me manque la mise en page de mon contenu pdf.

    Comment puis je centrer mon tableau de contenu pdf et de mettre la date au format dd/mm/yyyy en haut à gauche

    voici mon code :

    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
     
     
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Element;
    import com.itextpdf.text.Font;
    import com.itextpdf.text.FontFactory;
    import com.itextpdf.text.Phrase;
    import com.itextpdf.text.pdf.PdfPCell;
    import com.itextpdf.text.pdf.PdfPTable;
    import com.itextpdf.text.pdf.PdfWriter;
    import dev.bean.City;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    public class GeneratePdfReport {
     
        public static ByteArrayInputStream citiesReport(List<City> cities) {
     
            Document document = new Document();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
     
            try {
     
                PdfPTable table = new PdfPTable(3);
                table.setWidthPercentage(60);
                table.setWidths(new int[]{1, 3, 3});
     
                Font headFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD);
     
                PdfPCell hcell;
                hcell = new PdfPCell(new Phrase("Id", headFont));
                hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(hcell);
     
                hcell = new PdfPCell(new Phrase("Name", headFont));
                hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(hcell);
     
                hcell = new PdfPCell(new Phrase("Population", headFont));
                hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(hcell);
     
                for (City city : cities) {
     
                    PdfPCell cell;
     
                    cell = new PdfPCell(new Phrase(city.getId().toString()));
                    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    table.addCell(cell);
     
                    cell = new PdfPCell(new Phrase(city.getName()));
                    cell.setPaddingLeft(5);
                    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    table.addCell(cell);
     
                    cell = new PdfPCell(new Phrase(String.valueOf(city.getPopulation())));
                    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    cell.setPaddingRight(5);
                    table.addCell(cell);
                }
     
                PdfWriter.getInstance(document, out);
                document.open();
                document.add(table);
     
                document.close();
     
            } catch (DocumentException ex) {
     
                Logger.getLogger(GeneratePdfReport.class.getName()).log(Level.SEVERE, null, ex);
            }
     
            return new ByteArrayInputStream(out.toByteArray());
        }
    }
    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
     
    package com.zetcode.controller;
     
    import com.zetcode.bean.City;
    import com.zetcode.service.ICityService;
    import com.zetcode.util.GeneratePdfReport;
    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    import java.util.List;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.io.InputStreamResource;
    import org.springframework.http.HttpHeaders;
    import org.springframework.http.MediaType;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
     
    @RestController
    public class MyController {
     
        @Autowired
        ICityService cityService;
     
        @RequestMapping(value = "/pdfreport", method = RequestMethod.GET,
                produces = MediaType.APPLICATION_PDF_VALUE)
        public ResponseEntity<InputStreamResource> citiesReport() throws IOException {
     
            List<City> cities = (List<City>) cityService.findAll();
     
            ByteArrayInputStream bis = GeneratePdfReport.citiesReport(cities);
     
            HttpHeaders headers = new HttpHeaders();
            headers.add("Content-Disposition", "inline; filename=citiesreport.pdf");
     
            return ResponseEntity
                    .ok()
                    .headers(headers)
                    .contentType(MediaType.APPLICATION_PDF)
                    .body(new InputStreamResource(bis));
        }
    }
    quand j'appel mon controleur : http://localhost:8080/rest/pdfreport

    j'ai un pf mais le contenu n'est pas centré et je n'ai pas la date du jour en haut à gauche et je veux aussi ajouter l'image en haut à droite.

    Quelqu'un a une idée?

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu peux utiliser un PdfPageEventHelper pour avoir une entête de page, qui s'ajoute au PdfWriter, ou un IEventHander, qu'on peut ajouter au document par pdfDoc.addEventHandler(PdfDocumentEvent.START_PAGE, eventhandler);. Pour l'IEventHandler, il y a des exemples ici.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    Merci Joel,

    Voici le résultat de mon pdf.

    Je veux ajouter un truc de ce style.Voir pdf généré avec la capture d'écran qui va avec.

    Comment ajouter PdfPageEventHelper, as tu un exemple de code .

    Voici le code qui a produit ce pdf et si tu peux m'infiquer comment arriver à integrer PdfPageEventHelper et surtout centrer le contenu de mon pdf.

    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
    94
    95
    96
    97
    98
    99
    100
     
    package dev.etiquette;
     
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Element;
    import com.itextpdf.text.Font;
    import com.itextpdf.text.FontFactory;
    import com.itextpdf.text.Phrase;
    import com.itextpdf.text.pdf.PdfPCell;
    import com.itextpdf.text.pdf.PdfPTable;
    import com.itextpdf.text.pdf.PdfWriter;
    import com.itextpdf.text.pdf.PdfImage;
    import com.itextpdf.text.Image;
    import com.itextpdf.text.Paragraph;
     
    import dev.entite.CommandeClient;
     
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.util.List;
     
    public class GeneratePdfReport {
     
    	public static ByteArrayInputStream citiesReport(List<City> cities) throws MalformedURLException, IOException {
     
            Document document = new Document();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
     
            try {
     
                PdfPTable table = new PdfPTable(3);
                table.setWidthPercentage(60);
                table.setPaddingTop(175);
                //Creation d'un tableau à 3 colonnes
                table.setWidths(new int[]{1, 3, 3});
     
     
                Font headFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD);
     
                PdfPCell hcell;
     
                hcell = new PdfPCell(new Phrase("Id", headFont));
                hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(hcell);
     
     
     
                hcell = new PdfPCell(new Phrase("Name", headFont));
                hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(hcell);
     
     
                hcell = new PdfPCell(new Phrase("Population", headFont));
                hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(hcell);
     
     
     
                for (City city: cities) {
     
                    PdfPCell cell;
     
                    cell = new PdfPCell(new Phrase(city.getId().toString()));
                    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    table.addCell(cell);
     
                    cell = new PdfPCell(new Phrase(city.getName()));
                    cell.setPaddingLeft(5);
                    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    table.addCell(cell);
     
                    cell = new PdfPCell(new Phrase(String.valueOf(city.getPopulation())));
                    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    cell.setPaddingRight(5);
                    table.addCell(cell);
                }
     
                PdfWriter.getInstance(document, out);
                document.open();
                //document.add(new Paragraph("Image"));
                //document.add(image);
                document.add(table);
     
                document.close();
     
            } catch (DocumentException ex) {
     
               // Logger.getLogger(GeneratePdfReport.class.getName()).log(Level.SEVERE, null, ex);
            }
     
            return new ByteArrayInputStream(out.toByteArray());
        }
     
    }

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par lnquaidorsay Voir le message
    Comment ajouter PdfPageEventHelper, as tu un exemple de code .
    Une recherche sur le web et tu en trouveras plein. Tu as des exemples dans le forum, comme ici ou ici.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    Cool ça marche très maintenant, super merci.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 02/12/2018, 10h28
  2. generer un fichier pdf avec spring
    Par Roune dans le forum Spring
    Réponses: 3
    Dernier message: 21/07/2015, 09h26
  3. Réponses: 0
    Dernier message: 13/04/2014, 18h10

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