I use PdfPTable in the following way
var myTable = new PdfPTable( 3 );
foreach(var nextString in myStrings)
{
var nextCell = new PdfPCell( new Phrase( next
To solve this issue and others I recommend the use of the PdfPTable
method CompleteRow()
.
This will ensure that any incomplete rows have extra cells added to make them complete so that they show up in the generated PDF.
Generally, an incomplete row will be a logic error however by using CompleteRow()
you can easily identify where you have made these errors, and correct them.
In terms of your example:
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);
You can either fill the last row until it's fill or you can also set it's ColumnSpan
to occupy the empty space.
The last row is not visible because the last row is not complete. In your case with 3 columns and 4 cells, you need to add 2 more empty cells to make the last row complete.
The CompleteRow()
method will do the thing. This adds an empty cell at the end of your PDF, but you will notice it displays an empty cell with border. So, in order to avoid this behaviour, you will have to set DefaultCell.Border = Rectangle.NO_BORDER
before calling the CompleteRow()
method.
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);