2009-08-27 15 views
8

Sto creando un PDF con la versione 2.1.0 di iText. Devo creare una cella "dettaglio" in una cella di un tavolo. L'ho fatto annidando un tavolo all'interno di quella cella. Il problema con questo approccio è che i bordi della tabella nidificata non toccano i bordi della cella del contenitore. Quello che sto cercando è per una tabella annidata all'interno di una cella i cui bordi non differiscono dai bordi della tabella nidificati.Tabella nidificata iText all'interno di una cella

Ho un test come questo. Lo faccio all'interno di un ciclo per aggiungere tabelle all'interno di una cella al tavolo esterno:

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

Grazie.

risposta

16

credo di aver finalmente trovato:

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

Il trucco sta usando il tavolo in uno del costruttore PdfPCell.

+0

Perché c1 lì, ma di cui? È necessario? –

+0

Immagino sia un errore di battitura. Probabilmente dovrebbe essere c2. Io lo aggiusterò. – Averroes

2

Come identificata,

cell.setPadding(0); 

è quello che avevi bisogno.

+1

Sì, ma ho trovato che in questo modo c2 = new PdfPCell(); c2.addElement (testTable); c2.setPadding (0); non funziona allo stesso modo di c2 = new PdfPCell (testTable); c2.setPadding (0); outerTable.addCell (c2); Nel primo caso è possibile visualizzare i bordi della tabella nidificati. – Averroes

+1

Sì, quando si utilizza AddElement vengono utilizzate le proprietà dell'elemento aggiunto. Quando si utilizza il costruttore, vengono utilizzate le proprietà della cella della tabella anziché tutte le proprietà dell'elemento aggiunto. –

3

ho scoperto che quello che stava causando le mie tabelle ad essere più piccoli rispetto alla cella che racchiude era che non stavo aggiungendo il seguente codice al tavolo: non

table.setWidthPercentage(100); 
Problemi correlati