iText表中第一页的最后一行不是在字体的基线处绘制边框,就像表格在页面中分割时的所有其他行一样

时间:2014-07-07 18:05:13

标签: java itext itextpdf

我在下面有一个示例,它生成一个包含十行的表,最后一行占用两行。文档高度比正确适合整个表格需要小两个点。正如预期的那样,第一页上的最后一行包含单词" Two"和#34;线"部分继续在另一页上。但是,生成的PDF扩展了最后一行以适合整个文档,不包括页边距填充,而不是使用最后一行中文本的高度来确定它应该有多高。请注意,我使用table.setExtendLastRow(false, false)来保证表格不应该被扩展,但最后一行仍然会被扩展。任何想法如何阻止最后一行被延长?

FileOutputStream out = new FileOutputStream(new File("table.pdf"));
Document document = new Document(new Rectangle(612, 242));
PdfWriter.getInstance(document, out);

document.open();

PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(100);
table.setSplitLate(false);
table.setSplitRows(true);
table.setExtendLastRow(false, false);

for (int i = 0; i < 10; i++) {
    PdfPCell cell;
    if (i == 9) {
        cell = new PdfPCell(new Phrase("Two\nLines"));
    }
    else {
        cell = new PdfPCell(new Phrase(Integer.toString(i)));
    }
    table.addCell(cell);
}

document.add(table);
document.close();

我上传了一张我所看到的照片。请注意单词&#34; Two&#34;不同于行中所有其他数字下的间距。它似乎延伸到页边距的底部。

Image of the last row on the first page not being drawn at the base of the font

1 个答案:

答案 0 :(得分:0)

这是预期的行为,iText目前不支持此边缘案例。