user1717140
user1717140

Reputation: 353

PdfTable: last cell is not visible

I use PdfPTable in the following way

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

All is perfect then total cell count multiply the number of columns (3). But when I wanted to create a table with 3 columns but 4 cells - last row is not visible.

How to solve such issue?

itextsharp 5.3.3.0

Upvotes: 2

Views: 2275

Answers (4)

The Doctor
The Doctor

Reputation: 1

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

Upvotes: 0

TimS
TimS

Reputation: 2113

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

Upvotes: 9

Erre Efe
Erre Efe

Reputation: 15577

You can either fill the last row until it's fill or you can also set it's ColumnSpan to occupy the empty space.

Upvotes: 2

StevenGodin
StevenGodin

Reputation: 498

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.

Upvotes: 1

Related Questions