PdfTable:最后一个单元格不可见

时间:2012-10-03 13:22:16

标签: c# .net itextsharp

我以下列方式使用PdfPTable

var myTable = new PdfPTable( 3 );

foreach(var nextString in myStrings)
{

var nextCell = new PdfPCell( new Phrase( nextString, smallFont ) );
nextCell.Border = Rectangle.NO_BORDER;
nextCell.AddCell(nextCell);
}

pdfDocument.Add(myTable);

一切都很完美,然后总细胞计数乘以列数(3)。 但是当我想创建一个包含3列但只有4个单元格的表时 - 最后一行是不可见的。

如何解决这个问题?

itextsharp 5.3.3.0

4 个答案:

答案 0 :(得分:7)

要解决此问题及其他问题,我建议您使用PdfPTable方法CompleteRow()

这将确保任何不完整的行都添加额外的单元格以使其完整,以便它们显示在生成的PDF中。

通常情况下,不完整的行会出现逻辑错误,但是使用CompleteRow()您可以轻松识别出现这些错误的位置并进行更正。

就你的例子而言:

var myTable = new PdfPTable( 3 );

foreach(var nextString in myStrings)
{
    var nextCell = new PdfPCell( new Phrase( nextString, smallFont ) );
    nextCell.Border = Rectangle.NO_BORDER;
    nextCell.AddCell(nextCell);
}

myTable.CompleteRow();

pdfDocument.Add(myTable);

答案 1 :(得分:2)

您可以填写最后一行,直到填充为止,或者您也可以将其设置为ColumnSpan以占用空白区域。

答案 2 :(得分:1)

最后一行不可见,因为最后一行未完成。对于3列和4个单元格的情况,您需要再添加2个空单元格以使最后一行完成。

答案 3 :(得分:0)

CompleteRow()方法将执行此操作。这会在PDF的末尾添加一个空白单元格,但是您会注意到它显示了一个带边框的空白单元格。因此,为了避免这种行为,必须在调用DefaultCell.Border = Rectangle.NO_BORDER方法之前设置CompleteRow()

var myTable = new PdfPTable( 3 );

foreach(var nextString in myStrings)
{

    var nextCell = new PdfPCell( new Phrase( nextString, smallFont ) );
    nextCell.Border = Rectangle.NO_BORDER;
    nextCell.AddCell(nextCell);
}
myTable.DefaultCell.Border = Rectangle.NO_BORDER;
myTable.CompleteRow();

pdfDocument.Add(myTable);