我用使用itext 7呈现的表有几个问题 . 我使用itext 7.0.2.2(C#edition) .
首先,当表开始靠近页面底部并且页面只有 Headers 空间时,itext 7会在第一页上呈现 Headers ,并在 Headers 之后立即显示分页符 . 如何强制保持 Headers 和第一行在一起?
下一个问题是itext 7拆分行而不是将整行移动到下一页 . 我知道itext 5有setSplitLate(bool)方法,它将itext配置为拆分行,但是如何处理itext 7?看看行发生了什么:
注意,行可以为空,并且应该具有最小高度,因此对单元格内容的setKeepTogether(true)不是解决方案 . 我这样添加单元格:
table.AddCell(new Cell().SetMinHeight(MIN_HEIGHT).Add("foo"));
UPDATE: 这是行拆分的一个repro(C#):
var writer = new PdfWriter(new FileStream("...", FileMode.Create));
var pdfDoc = new PdfDocument(writer);
using (var document = new Document(pdfDoc, PageSize.A4))
{
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(new[] { 1.3f, 1f, 1f, 1f, 1f, 1f, 1f }))
.SetWidthPercent(100f)
.SetFixedLayout();
foreach (var i in Enumerable.Range(1, 7 * 100)) // 100 rows
{
var cell = new Cell().SetKeepTogether(true).SetMinHeight(45).Add(i.ToString());
table.AddCell(cell);
}
document.Add(table);
}
结果:
1 回答
设置表头单元格 .
tbl.addHeaderCell( new Cell().add("head txt"));
这将强制 Headers 在我的经历的新页面中重复 . 然后只需像正常一样在列的单元格中添加内容 .