2009-08-27 56 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、それに言及されていませんか?それは必要ですか? –

+0

私はタイプミスだと思います。おそらくc2でなければなりません。私はそれを修正します。 – Averroes

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

+1

はい、AddElementを使用すると、追加された要素のプロパティが使用されます。コンストラクタを使用するときは、追加された要素のプロパティではなく、表のセルのプロパティが使用されます。 –

3

table.setWidthPercentage(100); 
関連する問題