【问题标题】:Creating and displaying data in iText 7 for .NET Table在 iText 7 for .NET Table 中创建和显示数据
【发布时间】:2018-07-17 18:07:10
【问题描述】:

应该足够简单:

public void WritePartsPdf(Document doc)
{
    Table table = new Table(2, true);

    foreach (var part in PartsList)
    {
        Paragraph name = new Paragraph(part.PartName);
        Paragraph length = new Paragraph(part.Length.ToString());

        var cell = new Cell().Add(name);
        var cell2 = new Cell().Add(length);
        cell.Add(cell2);

        table.AddCell(cell);
    }
    doc.Add(table);
}

但是我的段落在所有单元格中都是重复的,我需要在这里明显的是一列用于名称,另一列用于长度。这是我到目前为止得到的:

请帮忙!

【问题讨论】:

  • 您的代码中的 PartsList 是什么?所以你仍然想要 2 列,但是例如左一个只有标签,右一个值,对吗?
  • PartsList 只是一个全局列表。但我发现了问题所在,我现在将其添加为答案

标签: c# pdf itext7


【解决方案1】:

所以,“问题”是设置桌子比我最初想象的还要简单。我们不需要嵌套单元格,因为我已经设置了列计数,只需在另一个单元格之后添加一个单元格就可以了:

public void WritePartsPdf(Document doc)
{
    Table table = new Table(2, true);
    foreach (var part in PartsList)
    {
        var name = new Paragraph(part.PartName);
        var length = new Paragraph(part.Length.ToString());
        var column1 = new Cell().Add(name);
        var column2 = new Cell().Add(length);
        table.AddCell(column1);
        table.AddCell(column2);
    }
    doc.Add(table);
}

必须在这里挖掘代码才能得到这个想法:https://developers.itextpdf.com/content/itext-7-jump-start-tutorial-net/chapter-3-using-renderers-and-event-handlers

****更新****

它变得更加容易。我搞砸了,发现Paragraph 扩展了BlockElement<T>,所以我们根本不需要单元格对象来将单元格添加到表格中:

private void WriteListToPdf(Document doc)
{
    Table table = new Table(2, true);

    foreach (var item in myList)
    {
        table.AddCell(new Paragraph(item.Foo));
        table.AddCell(new Paragraph(item.Bar));
    }
    doc.Add(table);
}

幸运的是tableAddCellBlockElement<T> 有过载;)

如果您在单个单元格中需要多行,您仍然需要单元格对象。只需在单元格中添加一堆段落,然后然后将单元格添加到表格中。

【讨论】:

猜你喜欢
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多