iText 5.5.3设置setSkipFirstHeader(true)时,PdfPTable.keepRowsTogether()无法正常工作

时间:2014-10-30 18:24:14

标签: java itext

我在iText中遇到一个有趣的场景,其中columnText底部的表意外地分割了行。我写了一些代码来模拟我看到的情况,结果如下图所示:

enter image description here

可以使用以下代码复制上面的图像:

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);,但仍然会发生分裂。我最初认为具有HeaderSubheader的行也是标题行的一部分,但实际上它们只是在第一页上模拟单独的标题文本的行,这让我感到困惑。任何想法如何保持第二个非标题行与第一个非标题行?

1 个答案:

答案 0 :(得分:1)

原来这是一个错误。我与iText支持团队合作,他们能够提出解决方案。修复程序似乎已进入5.5.6版本。