iText - evite a última linha para não cortar tabelas na página dividida para a próxima página

Eu estou trabalhando no itext 5 usando java. Eu tenho páginas com várias tabelas com linhas dinâmicas. Em alguns casos, a última linha da tabela é dividida na próxima página com o cabeçalho seguinte. estou usandosetHeaderRows() esetSkipFirstHeader() para gerenciar a continuação da próxima página. A última linha tem espaço suficiente para caber na página anterior. Eu gostaria de ajustar a última linha na mesma página em vez da próxima página.

Por exemplo, na página 1, a última linha é dividida na primeira linha da próxima página. Em vez disso, gostaria de ajustar essa linha na página 1, para salvar uma página extra com todos os espaços em branco.

Eu tentei usarsetExtendLastRow(), mas não está funcionando. Alguém sabe como corrigir esse problema. Eu estou anexando um código de exemplo de trabalho.

public class ProposalItextSplitLastRow {
 public static void main(String[] args) {
    try {
        Document document = new Document();
        document.setPageSize(PageSize.LETTER);
        document.setMargins(16, 14, 14, 14);
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:/SplitLastRow.pdf"));
        document.open();
        document.setPageSize(PageSize.LETTER);
        document.setMargins(16, 14, 42, 38);

        for (int m = 1; m < 20; m++) {

            int row = 0;
            PdfPTable table = new PdfPTable(1);
            table.setSpacingAfter(0);
            table.setSpacingBefore(0);
            table.setWidthPercentage(100);

            table.setHeaderRows(1);
            table.setSkipFirstHeader(true);
            add(table, "Header Row continued " + m, BaseColor.LIGHT_GRAY, row++);
            add(table, "Header Row normal " + m, BaseColor.LIGHT_GRAY, row++);

            add(table, "Text Row 1 ", BaseColor.WHITE, row++);
            add(table, "Text Row 2 ", BaseColor.WHITE, row++);
            add(table, "Text Row 3 ", BaseColor.WHITE, row++);

            addPadding(table);

            document.add(table);
        }

        document.close();
    } catch (Exception de) {
        de.printStackTrace();
    }
}

private static void add(PdfPTable table, String text, BaseColor color, int row) {
    PdfPCell pdfCellHeader = new PdfPCell();
    pdfCellHeader.setBackgroundColor(color);
    pdfCellHeader.addElement(new Paragraph(new Phrase(text)));
    table.addCell(pdfCellHeader);
}

private static void addPadding(PdfPTable table) {
    PdfPCell cell = new PdfPCell();
    cell.setFixedHeight(2f);
    cell.setBorder(Rectangle.NO_BORDER);
    cell.setColspan(table.getNumberOfColumns());
    table.addCell(cell);
}
}

questionAnswers(3)

yourAnswerToTheQuestion