PdfPTable 更喜欢 SplitRows false

PdfPTable Prefer SplitRows false

将 PdfPTable 与 ColumnText 一起使用是否可能更喜欢不拆分行,但如果它不适合则拆分?这是一个 table 的示例,其中只有一行和一列无法放在一页上,

        using (var ms = new MemoryStream())
        {
            var doc = new Document(PageSize.LETTER, 72f, 72f, 72f, 72f);
            var writer = PdfWriter.GetInstance(doc, ms);
            doc.Open();
            var canvas = writer.DirectContent;

            var ct = new ColumnText(canvas);

            var text = new StringBuilder();
            for (int i = 0; i < 40; ++i)
                text.AppendLine(i.ToString());

            // Add a table with a single row and column that doesn't fit on one page
            var t = new PdfPTable(1);
            t.SplitLate = true;
            t.SplitRows = false;
            t.WidthPercentage = 100f;

            var c = new PdfPCell();
            c.HorizontalAlignment = Element.ALIGN_LEFT;
            c.VerticalAlignment = Element.ALIGN_TOP;
            c.Border = Rectangle.NO_BORDER;
            c.BorderWidth = 0;
            c.Padding = 0;
            c.AddElement(new Paragraph(text.ToString()));
            t.AddCell(c);

            ct.AddElement(t);

            int status = 0;
            while (ColumnText.HasMoreText(status))
            {
                ct.SetSimpleColumn(doc.Left, doc.Bottom, doc.Right, doc.Top);
                status = ct.Go();

                if (ColumnText.HasMoreText(status))
                    doc.NewPage();
            }

            doc.Close();

            File.WriteAllBytes("d:\test.pdf", ms.ToArray());
        }

我正在使用 SplitLate = trueSplitRows = false。调用 Go() returns table.

的状态为 2 (NO_MORE_COLUMN)

在此示例中,table 将跨越一页以上。我希望通过使用 SplitLateSplitRows 我可以让 ColumnText 在可能的时候将一行保持在一起,并在需要的时候拆分它。

当返回状态 2 时,我是否需要对 ColumnText 执行某些操作,以便 table 执行我想要执行的操作?在这个简单的示例中,我显然知道 table 不适合并且可以将 SplitRows 设置为 true,但在更复杂的示例中,数据是动态的并且 table 的大小或者 table 将继续的页面是未知的(或不容易知道的),我怎样才能让 table 表现得像这样?

这已被 iText 团队确定为错误,将在即将发布的版本中修复。