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

Documents Java Discussion :

Numéroter Pdf avec itext


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Par défaut Numéroter Pdf avec itext
    Bonjour je veux numéroter mon document PDF en utilisant l'API itext.
    je ne crée pas le document directement dans le disque mais je le génére en utilisant ceci :
    Document doc = new Document(PageSize.A4.rotate());
    PdfWriter writer = PdfWriter.getInstance(doc, response.getOutputStream());

  2. #2
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    Il faut ajouter un "PageEvent" dans lequel on met en pied-de-page (ou en entête en surchargeant onStartPage(PdfWriter writer, Document document)) un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    writer.setPageEvent( new PdfPageEventHelper(){
      public void onEndPage(PdfWriter writer, Document document) {
        int pageNumber = writer.getPageNumber() ;
        String text = "Page " + pageNumber  ;
        Rectangle page = document.getPageSize();
        PdfPTable structure = new PdfPTable () ;
        structure.addCell(new Paragraph(text));
        structure.setTotalWidth(page.getWidth() - document.leftMargin() - document.rightMargin());
        structure.writeSelectedRows(0, -1, document.leftMargin(), document.bottomMargin(), writer.getDirectContent());
      }
    }
    A noter que l'affectation du PageEvent doit s'effectuer avant le document.open()

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Par défaut
    Citation Envoyé par knono Voir le message
    Il faut ajouter un "PageEvent" dans lequel on met en pied-de-page (ou en entête en surchargeant onStartPage(PdfWriter writer, Document document)) un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    writer.setPageEvent( new PdfPageEventHelper(){
      public void onEndPage(PdfWriter writer, Document document) {
        int pageNumber = writer.getPageNumber() ;
        String text = "Page " + pageNumber  ;
        Rectangle page = document.getPageSize();
        PdfPTable structure = new PdfPTable () ;
        structure.addCell(new Paragraph(text));
        structure.setTotalWidth(page.getWidth() - document.leftMargin() - document.rightMargin());
        structure.writeSelectedRows(0, -1, document.leftMargin(), document.bottomMargin(), writer.getDirectContent());
      }
    }
    A noter que l'affectation du PageEvent doit s'effectuer avant le document.open()
    Merci d'avance ceci n'est pas mal lorsque mon document contient une seule page.
    Mais le problème persiste quand j'ai plusieurs pages dans le document.
    Actuellement je cherche en même temps à parcourir le document page par page.

  4. #4
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    Les entêtes et pieds-de-page se répètent sur chaque page de manière automatique.

    Tu peux même les faire varier avec une condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(writer.getPageNumber() == 1)
      // ...
    }
    else if(writer.getPageNumber() == 2)
      // ...
    }
    // etc etc

  5. #5
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Par défaut
    Citation Envoyé par knono Voir le message
    Les entêtes et pieds-de-page se répètent sur chaque page de manière automatique.

    Tu peux même les faire varier avec une condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(writer.getPageNumber() == 1)
      // ...
    }
    else if(writer.getPageNumber() == 2)
      // ...
    }
    // etc etc

    si Les entêtes et pieds-de-page se répètent sur chaque page de manière automatique, donc il se peut que j'ai mal appelé les methodes onStartPage(writer,document) et onEndPage(writer,document);

    par exemple: voici mes 2 derniéres instructions
    onEndPage(writer,document);
    document.close();

    et ceci ecrit le numéro de la dernière page sur seulement le pied de la derniére page.

  6. #6
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    En fait je pense que tu n'utilises pas la classe comme il se doit.

    Tu dois :
    1. créer une classe qui hérite de PdfPageEventHelper dans laquelle tu surcharges la méthode onEndPage(PdfWriter writer, Document document) comme vu dans mon post précédent.
    2. affecter une instance de ladite classe au com.lowagie.text.pdf.PdfWriter (via la méthode PdfWriter.setPageEvent(PdfPageEvent) ) AVANT de faire le document.open()

    Et là, au miracle d'iText, ça va se numéroter tout seul, sans que tu ne fasses quoi que ce soit d'autre que le remplissage standard du document.

    Ça devrait marcher.
    Enfin normalement ...

  7. #7
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par défaut itext + page colonnes + ficheir text
    Salut,
    SVP, je veux afficher le contenu d'un fichier text dans une page de 3 colonnes comme ceci:

    http://www.1t3xt.info/examples/brows...example&id=127

    comment je peux le modifier pour lire les données à partir d'un fichier .txt ?

    Merci d'avance

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

Discussions similaires

  1. Comment modifier un PDF avec iText?
    Par adrielo dans le forum Documents
    Réponses: 6
    Dernier message: 07/11/2008, 16h27
  2. Fermeture d'un fichier PDF avec iText
    Par sliderman dans le forum Documents
    Réponses: 4
    Dernier message: 28/04/2008, 12h57
  3. Splitter des documents PDF avec iText
    Par osmoz dans le forum Général Java
    Réponses: 2
    Dernier message: 11/03/2008, 17h58
  4. Création d'un tableau pdf avec itext
    Par Mengué georges dans le forum Documents
    Réponses: 1
    Dernier message: 25/10/2007, 11h31
  5. lire un dessin sur un pdf avec itext
    Par mm2405 dans le forum Documents
    Réponses: 5
    Dernier message: 23/04/2007, 11h03

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