首页 文章

itext 7 - 如何配置表拆分

提问于
浏览
1

我用使用itext 7呈现的表有几个问题 . 我使用itext 7.0.2.2(C#edition) .

首先,当表开始靠近页面底部并且页面只有 Headers 空间时,itext 7会在第一页上呈现 Headers ,并在 Headers 之后立即显示分页符 . 如何强制保持 Headers 和第一行在一起?
table splits right after header

下一个问题是itext 7拆分行而不是将整行移动到下一页 . 我知道itext 5有setSplitLate(bool)方法,它将itext配置为拆分行,但是如何处理itext 7?看看行发生了什么:
table row breaks
注意,行可以为空,并且应该具有最小高度,因此对单元格内容的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);
}

结果:
enter image description here

1 回答

  • 0

    设置表头单元格 . tbl.addHeaderCell( new Cell().add("head txt")); 这将强制 Headers 在我的经历的新页面中重复 . 然后只需像正常一样在列的单元格中添加内容 .

相关问题