Averroes
Averroes

Reputation: 4228

iText nested table inside a cell

I'm creating a PDF with iText version 2.1.0. I have to create a "detail" cell in a cell of a table. I did this nesting a table inside that cell. The problem with this approach is that the borders of the nested table don't touch the borders of the container cell. What I am looking for is for a table nested inside a cell whose borders don't differenciate from the nested table borders.

I have a test like this one. I do this inside a loop to add tables inside a cell to the outer table:

PdfPCell testCell = new PdfPCell(new Paragraph("Test"));
//I want this border to touch the containerCell borders.
testCell.setBorder(PdfPCell.BOTTOM);
testTable =  new PdfPTable(2);

testTable.addCell(testCell);
testTable.addCell(testCell);
testTable.addCell(testCell);
testTable.addCell(testCell);

PdfPCell containerCell = new PdfPCell();
containerCell.addElement(testTable);
outerTable.addCell(containerCell);

Thanks.

Upvotes: 11

Views: 33845

Answers (3)

Averroes
Averroes

Reputation: 4228

I think I finally found it:

testTable = new PdfPTable(1);
PdfPCell c2;
testTable.addCell("aaaa");
testTable.addCell("bbbb");

c2 = new PdfPCell (testTable);//this line made the difference
c2.setPadding(0);
outerTable.addCell(c2);

The trick here is using the table in one of the PdfPCell constructor.

Upvotes: 25

schlow
schlow

Reputation: 154

I found that what was causing my tables to be smaller than the enclosing cell was that I was not adding the following code to the table:

table.setWidthPercentage(100);

Upvotes: 4

cagcowboy
cagcowboy

Reputation: 30888

As you identified,

cell.setPadding(0);

is what you needed.

Upvotes: 2

Related Questions