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

API standards et tierces Java Discussion :

Itexte + créer un Header de deux parties


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut Itexte + créer un Header de deux parties
    Bonjour, je souhaite créer un header pour mon PDF avec deux partie, une partie afficher à la gauche et une partie à droite.

    J'ai essayé ce 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
    //			Ajout de l'entête gauche
    			Paragraph para1 = new Paragraph();
    			para1.add("Entete du fichier PDF");
    			HeaderFooter header = new HeaderFooter(para1,false);
    			header.setAlignment(HeaderFooter.ALIGN_LEFT);
    			document.setHeader(header);
     
                           // Ajout de l'entête droite
    			Paragraph para3 = new Paragraph();
    			para3.add("Entete droite du fichier PDF");
    			HeaderFooter header3 = new HeaderFooter(para3,false);
    			header3.setAlignment(HeaderFooter.ALIGN_RIGHT);
    			document.setHeader(header3);
     
    //			Ajout du pied de page
    			Paragraph para2 = new Paragraph();
    			para2.add("Pied de page");
    			HeaderFooter footer = new HeaderFooter(para2,false);
    			footer.setAlignment(HeaderFooter.ALIGN_CENTER);
    			document.setFooter(footer);
     
                            writer.close();
                            document.open();
                            document.newPage();
    Mais ça me crée seulement L'entête à droite, y'-a- un moyen de faire ça?.

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, le document ne peut avoir qu'un seul header, c'est pour ça que le second écrase ton 1er header.

    Pour faire ce que tu souhaites, ton header doit être un tableau et non pas un paragraphe. Et dans ce tableau du y mets 2 cellules, une alignée à gauche, l'autre à droite, et tu supprimes les bordures. Ensuite tu mets les paragraphes dans ces cellules et ça devrait fonctionner.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Bonjour,

    Merci pour votre réponse.Mais le problème qui se pose ici c'est que le constructeur de la class "HeaderFooter" n'accepte pas le type "PdfPTable".

    Donc ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                //Ajout de l'entête gauche
                            PdfPTable tableEntete = new PdfPTable(2);
    			Paragraph para1 = new Paragraph();
    			para1.add("Entete du fichier PDF");
    			HeaderFooter header = new HeaderFooter(tableEntete ,false);
    Donne erreur au niveau de la dernière instruction.

    Merci d'avance.

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Désolé, j'ai oublié que j'avais utilisé un événement pour écrire mon tableau d'entête à chaque fin de page du document. Ce système me permet d'avoir des entêtes et pied de page totalement dynamique (numéros de page, de chapitres, effet miroir suivant les pages paires ou impaires, etc).

    C'est peut-être trop complexe pour simplement afficher 2 paragraphes en entête mais je ne connais pas d'autre solution aujourd'hui.

    En fait c'est assez simple, il faut créer une classe qui implémente PdfPageEvent. On associe cette classe au writer du document par la méthode setPageEvent du writer.

    Puis dans la méthode onEndPage il suffit de créer le PdfPTable voulu. On l'écrit ensuite via la méthode writeSelectedRows.

    Avec un peu de code, ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // quelque part où tu initialise le writer
    writer.setPageEvent(new HeaderPageEvent());
    //
     
    public class HeaderPageEvent extends PdfPageEvent {
    @Override
        public void onEndPage(PdfWriter writer, Document doc) {
            PdfPTable t = new PdfPTable();
            // création du tableau
            t.writeSelectedRows(0, -1, doc.leftMargin(), doc.getPageSize().getHeight() - t.spacingBefore(), writer.getDirectContent());
        }
    }

Discussions similaires

  1. Separateur entre deux parties d'un panel
    Par bygui dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/06/2006, 12h42
  2. Formulaire: Créer une dépendance entre deux champs.
    Par mystikfury dans le forum Access
    Réponses: 3
    Dernier message: 17/05/2006, 17h49
  3. [CSS]deux parties plus copyright mais...
    Par psychoBob dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 02/01/2006, 00h25
  4. Réponses: 3
    Dernier message: 13/11/2005, 15h04
  5. Créer un lien en deux champs d'un formulaire
    Par colinet dans le forum IHM
    Réponses: 2
    Dernier message: 13/01/2005, 08h41

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