Skip to main content
Skip table of contents

Why doesn't getDefaultCell().setBorder(PdfPCell.NO_BORDER) have any effect?

For some reason table.getDefaultCell().setBorder(PdfPCell.NO_BORDER) has no effect: my table has still borders.


Here is my code:


PdfPTable table = new PdfPTable(new float[] { 1, 1, 1, 1, 1 });
table.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
Font tfont = new Font(Font.FontFamily.UNDEFINED, 10, Font.BOLD);
table.setWidthPercentage(100);
PdfPCell cell;
cell = new PdfPCell(new Phrase("Menge", tfont));
table.addCell(cell);
cell = new PdfPCell(new Phrase("Beschreibung", tfont));
table.addCell(cell);
cell = new PdfPCell(new Phrase("Einzelpreis", tfont));
table.addCell(cell);
cell = new PdfPCell(new Phrase("Gesamtpreis", tfont));
table.addCell(cell);
cell = new PdfPCell(new Phrase("MwSt", tfont));
table.addCell(cell);
document.add(table);

Do you have any idea what I am doing wrong?

Posted on StackOverflow on Nov 30, 2014 by hiasl

You are mixing two different concepts.

Concept 1: you define every Cell (no PdfPCell in iText 7) manually, for instance:

Cell cell = new Cell()
    .add(new Paragraph("Menge"))
    .setFont(tfont)
    .setBorder(Border.NO_BORDER);

In this case, you define every aspect, every property of the cell on the cell itself.

Concept 2: you allow iText 7 to let the Cell use a Style object:

Style style = new Style()
    .setBorder(Border.NO_BORDER)
    .setFont(tfont);

table.addCell(new Cell("Adding a String").addStyle(style));
table.addCell(new Cell(new Paragraph("Adding a paragraph")).addStyle(style));

In this case, you can define properties at the level of the Style. The properties defined on the Style object will be used internally when iText adds a Cell to your table.

Conclusion: either you define the border for all the Cell instances separately, or you let iText use a Style in which case you can define the border at the level of the Style. If you choose the second option, you can adapt your code like this:

Table table = new Table(new float[] { 1, 1, 1, 1, 1 });
PdfFont tfont = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD);
table.setWidthPercent(100);
Style style = new Style()
    .setBorder(Border.NO_BORDER)
    .setFont(tfont);
table.addCell(new Cell(new Paragraph("Menge")).addStyle(style));
table.addCell(new Cell(new Paragraph("Beschreibung")).addStyle(style));
table.addCell(new Cell(new Paragraph("Einzelpreis")).addStyle(style));
table.addCell(new Cell(new Paragraph("Gesamtpreis")).addStyle(style));
table.addCell(new Cell(new Paragraph("MwSt")).addStyle(style));
document.add(table);

This decision was made by design, based on experience: it offers the most flexible to work with cells and properties.

Click this link if you want to see how to answer this question in iText 5.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.