2017-08-22 3 views
1

Je suis en mesure d'ajouter un pied de ligne unique au fichier PDF généré en utilisant iText PDF, mais j'ai besoin d'ajouter un pied de page multiligne.iText PDF - Comment ajouter un pied de page multiligne?

J'ai essayé de concaténer deux chaînes avec le nouveau caractère de ligne de Java (\n) mais aucune chance (voir le code # 1). En outre, ont essayé de définir le pied de page multiligne à travers les float x, float y paramètres de la méthode onEndPage de la classe PdfPageEventHelper. N'a pas fonctionné aussi (voir le code # 2).

Voici ce que je l'ai essayé jusqu'à présent:

Code # 1

Phrase phrase = new Phrase("line1" + "\n" + "line2", fontNormal10); 
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_LEFT, phrase, 40, 30, 0); 

Code # 2

Phrase phrase = new Phrase("line1", fontNormal10); 
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_LEFT, phrase, 40, 30, 0); 
Phrase phrase2 = new Phrase("line2", fontNormal10); 
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_LEFT, phrase2, 40, 0, 0); 

Répondre

2

Vous utilisez ColumnText.showTextAligned(). C'est une méthode que vous pouvez utiliser pour ajouter une seule ligne de texte. Vous ne devriez pas vous attendre à ce que cela fonctionne pour ajouter plusieurs lignes de texte.

Si vous voulez ajouter plus d'une ligne, vous devez définir un Rectangle, et vous devez utiliser ColumnText pour ajouter le contenu à l'intérieur de ce rectangle. Ceci est (bien sûr) a expliqué dans la documentation officielle, plus précisément dans la section Absolute positioning of text (iText 5) où vous trouverez la question How to add text inside a rectangle?

Le code dans la réponse à cette question est le code C#, mais il est facile de le convertir en Java:

Rectangle rect = new Rectangle(x1, y1, x2, y2); 
ColumnText ct = new ColumnText(writer.getDirectContent()); 
ct.SetSimpleColumn(rect); 
ct.addElement(new Paragraph("This is the text added in the rectangle")); 
ct.go(); 

Définir les valeurs de x1, y1, x2 et y2 de telle sorte que tout le texte inscrit dans le rectangle (texte qui ne correspond pas sera omise), et de telle manière qu'il est positionné en bas de la page.