我在iText中遇到了一个有趣的场景,其中columnText底部的表意外拆分了行。我已经编写了一些代码来模拟我所看到的情况,并且产生的结果如下图所示:
上面的图像可以使用以下代码复制:
Document document = new Document(new Rectangle(400, 220));
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(new File("test.pdf")));
document.open();
PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(100);
table.setHeaderRows(2);
table.setSplitLate(false);
table.setSplitRows(true);
table.setSkipFirstHeader(true);
table.getDefaultCell().setBackgroundColor(BaseColor.LIGHT_GRAY);
table.addCell("Header (Continued)");
table.addCell("Subheader (Continued)");
table.getDefaultCell().setBackgroundColor(BaseColor.WHITE);
table.addCell("Header");
table.addCell("Subheader");
table.addCell("Row 1");
table.addCell("Row 2");
table.addCell("Row 3");
table.addCell("Row 4");
ColumnText columnText = new ColumnText(writer.getDirectContent());
columnText.addElement(table);
columnText.setSimpleColumn(36, 158, 364, 184);
columnText.go();
columnText.setSimpleColumn(36, 36, 364, 148);
columnText.go();
document.close();
请注意,标记为标题的实际行已突出显示为灰色。我尝试使用
table.keepRowsTogether(new int[] { 1 });
,table.keepRowsTogether(new int[] { 3 });
甚至table.keepRowsTogether(0);
,但拆分仍然发生。我本来以为带有Header
和Subheader
的行也是标题行的一部分而使自己感到困惑,但实际上,它们仅仅是模拟第一页上单独标题文本的行。有什么想法如何将第二个非标题行与第一个非标题行保持在一起? 最佳答案
原来这是一个错误。我与iText支持团队一起解决了这个问题,他们能够提出解决方案。该修复程序似乎已纳入5.5.6版本。