net中带有iText的嵌套表问题

net中带有iText的嵌套表问题,itext,itext7,Itext,Itext7,我在.net应用程序中使用iText 7.0.4.0生成PDF。但当文本较长时,内部表溢出 外表有10列,带绿色边框,如下图所示,似乎已呈现良好效果。每个外部表格单元格包含一个表格,其中一个单元格。但当段落文本较大时,内部表格单元格会溢出 我在大型表单构建产品中使用iText。因此,我用简单的场景重新创建了这个问题,下面给出了代码。请注意,实际使用中的列数不是固定的 有人能告诉我实现这一目标的正确途径吗 这是C代码 private表OuterTable() { var columns=GetT

我在.net应用程序中使用iText 7.0.4.0生成PDF。但当文本较长时,内部表溢出

外表有10列,带绿色边框,如下图所示,似乎已呈现良好效果。每个外部表格单元格包含一个表格,其中一个单元格。但当段落文本较大时,内部表格单元格会溢出

我在大型表单构建产品中使用iText。因此,我用简单的场景重新创建了这个问题,下面给出了代码。请注意,实际使用中的列数不是固定的

有人能告诉我实现这一目标的正确途径吗

这是C代码

private表OuterTable()
{
var columns=GetTableColumnWidth(10);
var outerTable=新表(列,true);
可外接。设置宽度百分比(100);
for(int index=0;index
感谢mkl花费您宝贵的时间。我用你“没有内表”的想法解决了我的问题。这不是如何解决问题中提到的嵌套表问题,而是实现结果的另一种方法

我在段落中使用了“\n”以实现我的目标。这是输出和代码。

private表OuterTable()
{
var columns=GetTableColumnWidth(10);
var outerTable=新表(列,true);
可外接。设置宽度百分比(100);
for(int index=0;index
请使用当前的iText 7(例如7.1.2)重试。表创建代码经历了许多改进。根据您的建议,我尝试了7.1.2.0。还是一样的结果(在这种情况下,请共享
GetTableColumnWidth(10)
返回的内容,以允许复制问题。GetTableColumnWidth(10)返回具有列宽的浮点数组。请使用var columns=new float[]{10,10,10,10,10,10,10,10};对于上述情况。我还注意到,只有当外部表有大量列(例如:10)时,才会出现上述问题。对于4列,它可以正常工作。好的。尽管如此,您认为结果会是什么样子?十倍
“ABCDEFGHIJKL”
标准大小根本不合适。您希望段落分成多行吗?还是希望使用较小的字体?
private Table OuterTable()
{
    var columns = GetTableColumnWidth(10);
    var outerTable = new Table(columns, true);
    outerTable.SetWidthPercent(100);

    for (int index = 0;   index < columns.Length; index++)
    {
        Cell outerTableCell = new Cell();

        Table innerTable = new Table(new float[] { 100 });
        innerTable.SetWidthPercent(100);
        Cell innerTableCell = new Cell();
        Paragraph paragraph = new Paragraph("ABCDEFGHIJKL").AddStyle(_fieldValueStyle);

        innerTableCell.Add(paragraph);
        innerTable.AddCell(innerTableCell);

        outerTableCell.Add(innerTable);
        outerTable.AddCell(outerTableCell);

        innerTableCell.SetBorder(new SolidBorder(Color.RED, 2));
        innerTableCell.SetBorderRight(new SolidBorder(Color.BLUE, 2));
        outerTableCell.SetBorder(new SolidBorder(Color.GREEN, 2));
    }

    return outerTable;
}
private Table OuterTable()
    {
        var columns = GetTableColumnWidth(10);
        var outerTable = new Table(columns, true);
        outerTable.SetWidthPercent(100);

        for (int index = 0; index < columns.Length; index++)
        {
            Cell outerTableCell = new Cell();

            outerTableCell.Add(GetContent());
            outerTable.AddCell(outerTableCell);
        }

        return outerTable;
    }

    private Paragraph GetContent()
    {
        int maxIndex = 3;
        Paragraph paragraph = new Paragraph();
        for (int index = 0; index < maxIndex; index++)
        {
            paragraph.Add(index + " - ABCDEFGHIJKL \n").AddStyle(_fieldValueStyle);
        }
        return paragraph;
    }