PdfPTable首选SplitRows false

时间:2015-06-11 16:07:15

标签: itextsharp itext

将PdfPTable与ColumnText一起使用是否可以选择不拆分的行,但如果它不适合则拆分?以下是一个包​​含单个行和列的表格的示例,该表格不适合单个页面,

void func2_wrapper(void* data, void* painter, double x, double y)
{
   func2(data, painter, x, y);
}

我正在使用 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 = true。对Go()的调用返回表的状态2(SplitRows = false)。

在此示例中,该表将跨越多个页面。希望是通过使用NO_MORE_COLUMNSplitLate我可以让ColumnText在可能的情况下将行保持在一起并在需要时将其拆分。

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

1 个答案:

答案 0 :(得分:0)

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