2009-08-27 159 views
8

Estoy creando un PDF con iText versión 2.1.0. Tengo que crear una celda de "detalles" en una celda de una tabla. Hice esto anidando una mesa dentro de esa celda. El problema con este enfoque es que los bordes de la tabla anidada no tocan los bordes de la celda del contenedor. Lo que busco es una tabla anidada dentro de una celda cuyos bordes no difieran de los bordes de la tabla anidada.Tabla anidada iText dentro de una celda

Tengo una prueba como esta. Hago esto dentro de un bucle para agregar tablas dentro de una celda a la tabla externa:

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

Gracias.

Respuesta

16

Creo que finalmente lo encontré:

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

El truco aquí es utilizar la tabla en uno de los constructor PdfPCell.

+0

¿Por qué es c1 allí, pero referido a? Es eso necesario? –

+0

Supongo que es un error tipográfico. Probablemente debería ser c2. Yo lo arreglare. – Averroes

2

Como se ha identificado,

cell.setPadding(0); 

es lo que necesitaba.

+1

Sí, pero encontré que de esta manera c2 = new PdfPCell(); c2.addElement (testTable); c2.setPadding (0); no funciona de la misma manera que c2 = new PdfPCell (testTable); c2.setPadding (0); outerTable.addCell (c2); En el primer caso, puede ver los bordes de la tabla anidada. – Averroes

+1

Sí, cuando se usa AddElement se usan las propiedades del elemento agregado. Al utilizar el constructor, se utilizan las propiedades de la celda de la tabla en lugar de las propiedades del elemento agregado. –

3

me pareció que lo que estaba haciendo mis tablas a ser menor que la celda que encierra era que no estaba añadiendo el siguiente código a la mesa: no

table.setWidthPercentage(100); 
Cuestiones relacionadas