2009-08-27 25 views
8

Tworzę plik PDF z iText w wersji 2.1.0. Muszę stworzyć komórkę "szczegół" w komórce tabeli. Zrobiłem to zagnieżdżając stolik w tej komórce. Problem z tym podejściem polega na tym, że granice zagnieżdżonego stołu nie dotykają granic komórki pojemnika. Czego szukam, to tabela zagnieżdżona wewnątrz komórki, której granice nie różnią się od zagnieżdżonych granic tabeli.Tabela zagnieżdżona iText wewnątrz komórki

Mam taki test. Robię to wewnątrz pętli, aby dodać tabele wewnątrz komórki do zewnętrznego stołu:

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

Dzięki.

Odpowiedz

16

myślę, że w końcu znalazł go:

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

Sztuką jest tu korzystając z tabeli w jednej z konstruktora PdfPCell.

+0

Dlaczego c1 tam, ale o których mowa? Czy to jest potrzebne? –

+0

Chyba to literówka. Powinno to być najprawdopodobniej c2. Naprawię to. – Averroes

2

Jak zidentyfikować,

cell.setPadding(0); 

jest to, czego potrzeba.

+1

Tak, ale stwierdziłem, że robi to w ten sposób c2 = new PdfPCell(); c2.addElement (testTable); c2.setPadding (0); nie działa tak samo jak c2 = new PdfPCell (testTable); c2.setPadding (0); outerTable.addCell (c2); W pierwszym przypadku można zobaczyć zagnieżdżone obramowania tabeli. – Averroes

+1

Tak, przy użyciu parametru AddElement są używane właściwości elementu dodanego. Podczas korzystania z konstruktora właściwości komórki tabeli są używane zamiast wszystkich właściwości dodanego elementu. –

3

Okazało się, że to, co było przyczyną moich tabel być mniejsza niż komórka załączając było to, że nie został dodając następujący kod do stołu: nie

table.setWidthPercentage(100); 
Powiązane problemy