6

I am able to create multiple rows if they contain the same number of columns:

table = new PdfPTable(3);

var firstRowCell1 = new PdfPCell( new Phrase ("Row 1 - Column 1"));
var firstRowCell2 = new PdfPCell( new Phrase ("Row 2 - Column 2"));
var firstRowCell3 = new PdfPCell( new Phrase ("Row 3 - Column 3"));
PdfPCell[] row1Cells = { firstRowCell1, firstLineRow2, firstRowCell3 };
var row1 = new PdfPRow(row1Cells);
table.Rows.Add(row1);

var nextRowCell1 = new PdfPCell( new Phrase ("Row 2 - Column 1"));
var nextRowCell2 = new PdfPCell( new Phrase ("Row 2 - Column 2"));
var nextRowCell3 = new PdfPCell( new Phrase ("Row 2 - Column 3"));
PdfPCell[] row2Cells = { nextRowCell1, nextRowCell2, nextRowCell3 };
var row2 = new PdfPRow(row2Cells);
table.Rows.Add(row2);

This works fine giving me two rows each with three columns.

enter image description here

However if I want the first row to just have one long column using Colspan it disappears:

var table = new PdfPTable(3);  

var firstRowCell1 = new PdfPCell(new Phrase("Row 1 - Column 1"));
firstRowCell1.Colspan = 3;
PdfPCell[] row1Cells = { firstRowCell1 };
var row1 = new PdfPRow(row1Cells);
deptHeaderTable.Rows.Add(row1);

var nextRowCell1 = new PdfPCell(new Phrase("Row 2 - Column 1"));
var nextRowCell2 = new PdfPCell(new Phrase("Row 2 - Column 2"));
var nextRowCell3 = new PdfPCell(new Phrase("Row 2 - Column 3"));
PdfPCell[] row2Cells = { nextRowCell1, nextRowCell2, nextRowCell3 };
var row2 = new PdfPRow(row2Cells);
deptHeaderTable.Rows.Add(row2);

enter image description here

There are no errors given it just simply does not render.

Additionally, I am aware of table.AddCell which automatically starts a new row when the table column limit is reached for the current row. However, I want to use PdfPRow if at all possible.

Any help would be greatly appreciated.

4

2 に答える 2

19

元の iText 開発者 (私) によって承認されていないドキュメントを読んだようです。使用停止を求めることができるように、そのドキュメントを見つけた URL を教えていただけますか?

ご質問への回答については、公式ドキュメントをご覧ください。 MyFirstTableの例が見つかります。この例に基づいて、独自のコードを次のように変更できます。

var table = new PdfPTable(3);
var cell = new PdfPCell(new Phrase("Cell with colspan 3"));
cell.Colspan = 3;
table.AddCell(cell);
table.AddCell("row 2; cell 1");
table.AddCell("row 2; cell 2");
table.AddCell("row 2; cell 3");

ご覧のとおり、このPdfPRowクラスを使用する理由はありません。このPdfPRowクラスは iText によって内部的に使用されますが、私の本に記載されているように、iText を使用する開発者はコードでそのクラスを使用すべきではありません。

于 2013-11-09T10:39:52.190 に答える