java界面分割,java – iText – 避免最后一行不要将页面分割到下一页

我正在使用

java的itext 5.我有一些带有动态行的多个表的页面.在某些情况下,最后一行的表格将分为下一页和下一个标题.我正在使用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);

}

}