2009-08-27 44 views
8

Tôi đang tạo một tệp PDF với phiên bản iText 2.1.0. Tôi phải tạo một ô "chi tiết" trong một ô của bảng. Tôi đã làm điều này lồng một cái bàn bên trong ô đó. Vấn đề với cách tiếp cận này là các đường viền của bảng lồng nhau không chạm vào các đường viền của ô chứa. Những gì tôi đang tìm kiếm là một bảng lồng bên trong một ô có đường viền không khác biệt với các đường viền bảng lồng nhau.Bảng lồng nhau iText bên trong một ô

Tôi có một thử nghiệm như thế này. Tôi làm điều này trong vòng lặp để thêm các bảng bên trong ô vào bảng ngoài:

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

Cảm ơn.

Trả lời

16

Tôi nghĩ rằng cuối cùng tôi đã tìm thấy nó:

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

Bí quyết ở đây là sử dụng bảng trong một trong những constructor PdfPCell.

+0

Tại sao c1 đó, nhưng không đề cập đến? Điều đó có cần thiết không? –

+0

Tôi đoán là một lỗi đánh máy. Nó có lẽ hầu hết là c2. Tôi sẽ sửa nó. – Averroes

2

Như bạn đã xác định,

cell.setPadding(0); 

là những gì bạn cần.

+1

Có, nhưng tôi thấy rằng làm theo cách này c2 = new PdfPCell(); c2.addElement (testTable); c2.setPadding (0); không hoạt động giống như c2 = PdfPCell mới (testTable); c2.setPadding (0); outerTable.addCell (c2); Trong trường hợp đầu tiên bạn có thể thấy các đường viền bảng lồng nhau. – Averroes

+1

Có, khi sử dụng AddElement, các thuộc tính của phần tử được thêm vào được sử dụng. Khi sử dụng hàm tạo, các thuộc tính của ô bảng được sử dụng thay cho bất kỳ thuộc tính nào của phần tử được thêm vào. –

3

tôi thấy rằng những gì đã gây bảng của tôi là nhỏ hơn so với tế bào bao quanh là tôi đã không được thêm đoạn mã sau vào bảng:

table.setWidthPercentage(100); 
Các vấn đề liên quan