iText - избегайте последней строки, чтобы не разрезать таблицы при разделении страницы на следующую страницу

Я работаю над Itext 5, используя Java. У меня есть страницы с несколькими таблицами с динамическими строками. В некоторых случаях последняя строка таблицы разбивается на следующую страницу с последующим заголовком. Я используюsetHeaderRows() а такжеsetSkipFirstHeader() управлять продолжением следующей страницы. В последнем ряду достаточно места для размещения на предыдущей странице. Я хотел бы разместить этот последний ряд на той же странице, а не на следующей.

Например, на странице 1 последняя строка разбивается на первую строку следующей страницы. Вместо этого я хотел бы разместить эту строку на странице 1, поэтому сохраните одну дополнительную страницу со всеми пробелами.

Я пытался с помощьюsetExtendLastRow(), но это не работает. Кто-нибудь знает, как решить эту проблему. Я прилагаю рабочий пример кода.

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

Ответы на вопрос(3)

Ваш ответ на вопрос