2009-08-27 11 views
8

Ich erstelle ein PDF mit iText Version 2.1.0. Ich muss eine "Detail" -Zelle in einer Zelle einer Tabelle erstellen. Ich habe einen Tisch in diese Zelle geschachtelt. Das Problem bei diesem Ansatz besteht darin, dass die Grenzen der verschachtelten Tabelle nicht die Grenzen der Containerzelle berühren. Ich suche nach einer Tabelle, die in einer Zelle verschachtelt ist, deren Grenzen nicht von den verschachtelten Tabellenrändern abweichen.iText verschachtelte Tabelle in einer Zelle

Ich habe einen Test wie diesen. Ich tue dies in einer Schleife Tabellen innerhalb einer Zelle an der äußeren Tabelle hinzuzufügen:

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); 

Dank.

Antwort

16

Ich glaube, ich es endlich gefunden:

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); 

Der Trick hier ist die Tabelle in einem der Konstruktor PdfPCell verwenden.

+0

Warum ist c1 da, aber nicht genannt? Wird das gebraucht? –

+0

Ich denke, ist ein Tippfehler. Es sollte höchstwahrscheinlich c2 sein. Ich werde es reparieren. – Averroes

2

Wie Sie identifiziert,

cell.setPadding(0); 

ist das, was man braucht.

+1

Ja, aber ich habe festgestellt, dass auf diese Weise c2 = neue PdfPCell(); c2.addElement (testTable); c2.setPadding (0); funktioniert nicht auf die gleiche Weise wie c2 = neue PdfPCell (testTable); c2.setPadding (0); äußereTabelle.addCell (c2); Im ersten Fall können Sie die verschachtelten Tabellenrahmen sehen. – Averroes

+1

Ja, wenn AddElement verwendet wird, werden die Eigenschaften des hinzugefügten Elements verwendet. Wenn Sie den Konstruktor verwenden, werden die Eigenschaften der Tabellenzelle anstelle der Eigenschaften des hinzugefügten Elements verwendet. –

3

fand ich, dass, was verursacht wurde meine Tabellen kleiner als die umschließenden Zelle war, dass ich nicht den folgenden Code in der Tabelle wurde hinzugefügt:

table.setWidthPercentage(100); 
Verwandte Themen