J'utilise itext pour générer un fichier pdf. Je souhaite aligner mon titre au milieu de la page. Actuellement j'utilise comme ça
Paragraph preface = new Paragraph();
for (int i = 0; i < 10; i++) {
preface.add(new Paragraph(" "));
}
Est-ce correct ou existe-t-il une autre meilleure façon de procéder?.
Utilisez Paragraph#setAlignment(int)
:
Paragraph preface = new Paragraph();
preface.setAlignment(Element.ALIGN_CENTER);
Voir le ALIGN_*
constantes dans l'interface Element
pour plus de valeurs possibles.
Si quelqu'un recherche une version .NET/C #, voici comment j'ai réalisé l'alignement CENTER.
J'utilise la bibliothèque iText7 pour .NET/C #, et j'ai atteint cet objectif en utilisant:
Paragraph preface = new Paragraph();
preface.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);
Si vous cherchez une solution à Itext7, vous pouvez utiliser la méthode setTextAlignment(...)
.
Exemple:
Paragraph preface = new Paragraph();
// add text
preface.setTextAlignment(TextAlignment.CENTER);
Je ne sais pas s'il s'agit d'une ancienne version, mais pour PdfWriter ces méthodes n'étaient pas là. Au lieu de cela, j'ai utilisé:
Paragraph p = new Paragraph("This too shall pass");
p.Alignment = Element.ALIGN_CENTER;
public static final String DEST = "results/tables/centered_text.pdf";
public static void main(String[] args) throws IOException, DocumentException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new CenteredTextInCell().createPdf(DEST);
}
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
Font font = new Font(FontFamily.HELVETICA, 12, Font.BOLD);
Paragraph para = new Paragraph("Test", font);
para.setLeading(0, 1);
PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(100);
PdfPCell cell = new PdfPCell();
cell.setMinimumHeight(50);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.addElement(para);
table.addCell(cell);
document.add(table);
document.close();
}