iText - unikaj ostatniego wiersza, aby nie ciąć tabel na podziale strony na następną stronę

Pracuję nad itext 5 za pomocą Java. Mam strony z wieloma tabelami z dynamicznymi wierszami. W niektórych przypadkach tabela ostatniego wiersza jest dzielona na następną stronę z następującym nagłówkiem. ja używamsetHeaderRows() isetSkipFirstHeader() zarządzać kontynuacją następnej strony. Ostatni rząd ma wystarczająco dużo miejsca, aby zmieścić się na wcześniejszej stronie. Chciałbym umieścić ten ostatni wiersz na tej samej stronie zamiast na następnej stronie.

Na przykład na stronie 1 ostatni wiersz zostanie podzielony na pierwszy wiersz następnej strony. Zamiast tego chciałbym dopasować ten wiersz na stronie 1, aby zapisać jedną dodatkową stronę ze wszystkimi pustymi miejscami.

Próbowałem użyćsetExtendLastRow(), ale to nie działa. Czy ktoś wie, jak naprawić ten problem. Dołączam działający przykładowy kod.

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