gpt4 book ai didi

java - iText 5.5.1 中的 Table.keepRowsTogether() 似乎无法正常工作

转载 作者:行者123 更新时间:2023-11-30 11:16:53 29 4
gpt4 key购买 nike

当我尝试将 iText 表格中的行保持在一起时,我得到了意想不到的结果。下面是一些独立的代码,可以用我看到的结果创建一个 PDF。

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

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);
}
table.keepRowsTogether(new int[] { 8, 9 });

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

该示例创建了一个表格,该表格太小两个像素而无法放在第一页上,迫使最后一行出现在下一页上。然而,我希望,因为我使用 keepRowsTogether 添加了数组, 以查看前八行留在一页上,最后两行留在下一页上,但情况并非如此,如下面的示例图像所示。相反,第七行(从零开始计数)也被转移到下一页。

enter image description here enter image description here根据API文档找到here , keepRowsTogether “定义哪些行不允许分页(如果可能)。”这向我表明,数组中未包含的第七行应该允许分页。

有没有人知道如何防止第七行在绝对适合第一页的情况下转移到下一页?

解决方案:与布鲁诺交谈后,我意识到我误解了 keepRowsTogether作品。对于上面的示例,我需要做的就是更改 table.keepRowsTogether(new int[] { 8, 9 });table.keepRowsTogether(9) .

最佳答案

我认为对 keepRowsTogether() 的含义存在误解。如果您使用:

table.keepRowsTogether(new int[] { 8, 9 });

您表示表格不会在第 8 行或第 9 行拆分。这与我看到的一致。

也许您想要这样的东西:split_at_row.pdf

此 PDF 是使用 SplitRowAtSpecificRow 创建的.而不是 keepRowsTogether(),它使用:

table.setBreakPoints(8);

这意味着 iText 将优先在第 8 行之后拆分表格(从 0 开始计数)。您可以引入多个断点。例如:

table.setBreakPoints(4, 8, 12);

关于java - iText 5.5.1 中的 Table.keepRowsTogether() 似乎无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665167/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com