2009-08-27 128 views
8

我使用iText 2.1.0版創建PDF。我必須在表格的單元格中創建一個「細節」單元格。我在這個單元格內嵌入了一張桌子。這種方法的問題是嵌套表的邊框不會觸及容器單元的邊界。我在尋找的是嵌套在單元格內的表格,這些單元格的邊界與嵌套的表格邊界沒有區別。單元格內的iText嵌套表

我有一個這樣的測試。我在一個循環內部將一個單元格中的表格添加到外部表格中:

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

謝謝。

回答

16

我想我終於找到了:

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

這裏的竅門是在PdfPCell構造一個使用表。

+0

爲什麼是C1那裏,但沒有提到?這是需要的嗎? – 2014-08-21 11:51:06

+0

我想是一個錯字。它應該是最可能的c2。我會修好它。 – Averroes 2014-08-22 06:11:30

2

當你確定,

cell.setPadding(0); 

是你需要的東西。

+1

是的,但我發現這樣做 c2 = new PdfPCell(); c2.addElement(testTable); c2.setPadding(0); 工作方式與 不一樣c2 = new PdfPCell(testTable); c2.setPadding(0); outerTable.addCell(c2); 在第一種情況下,您可以看到嵌套的表格邊框。 – Averroes 2009-08-28 15:48:40

+1

是的,使用AddElement時,會使用添加的元素的屬性。使用構造函數時,將使用表格單元格的屬性,而不是所添加元素的屬性。 – 2011-03-25 11:37:06

3

我發現,是什麼原因導致我的表比封閉細胞是,我並沒有加入以下代碼表中較小:

table.setWidthPercentage(100);