[iText] width, height, quelque chose m'échappe ?
Bonjour à tous !
Alors voilà je me suis inspiré de ce que j'ai trouver sur le net et donc j'ai créer mon document comme ceci :
Code:
Document document = new Document(PageSize.A4, 36, 36, 54, 36);
ensuite j'ai créer une box comme ceci:
Code:
1 2 3 4
| PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream(FILE));
writer.setBoxSize("art", new Rectangle(36, 54, 559, 788));
HeaderFooter event = new HeaderFooter(); |
donc là j'ai une box avec pour width 559
ensuite j'ai créer une classe HeaderFooter qui ressemble à ça :
Code:
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
| class HeaderFooter extends PdfPageEventHelper {
PdfTemplate total;
@Override
public void onOpenDocument(PdfWriter writer, Document document) {
total = writer.getDirectContent().createTemplate(30, 16);
}
@Override
public void onEndPage(PdfWriter writer, Document document) {
Rectangle rect = writer.getBoxSize("art");
try {
PdfPTable table = new PdfPTable(3);
table.setTotalWidth(new float[] { 450, 57, 20 });
table.setLockedWidth(true);
table.getDefaultCell().setFixedHeight(28);
table.addCell(new Phrase("Facture", catFont));
table.getDefaultCell().setHorizontalAlignment(
Element.ALIGN_RIGHT);
table.addCell(String.format("Page %d /", writer.getPageNumber()));
PdfPCell cell = new PdfPCell(Image.getInstance(total));
table.addCell(cell);
table.writeSelectedRows(0, -1, rect.getLeft(),
rect.getTop() + 35, writer.getDirectContent());
}
public void onCloseDocument(PdfWriter writer, Document document) {
ColumnText.showTextAligned(total, Element.ALIGN_LEFT, new Phrase(
String.valueOf(writer.getPageNumber() - 1)), 2, 2, 0);
}
} |
seulement voilà ça ne me parait pas cohérent car si j'additionne les width de mon tableaux (450, 57, 20) j’obtiens 527 et non 559 !!!
si je rajoute 30 quelque part mon tableaux devient trop grand !
Pourquoi ça se comporte comme ça ? est ce qu'il y a qqch que j'ai zappé ?