将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_COLUMN
和SplitLate
我可以让ColumnText在可能的情况下将行保持在一起并在需要时将其拆分。
返回状态为2时,我是否需要对ColumnText执行某些操作,以便该表可以执行我尝试执行的操作?在这个简单的例子中,我显然知道该表不适合并且可以将SplitRows
设置为true,但是在一个更复杂的示例中,数据是动态的,表格将是表格或页面的大小继续是未知的(或不容易知道),我怎样才能让表格像这样?
答案 0 :(得分:0)
这被iText团队认定为一个错误,将在即将发布的版本中修复。