【问题标题】:Rowspan with iTextSharp doesn't work properly使用 iTextSharp 的 Rowspan 无法正常工作
【发布时间】:2011-04-25 07:02:36
【问题描述】:

我正在尝试使用 iTextSharp 创建一个简单的表格,因此使用 C#。目标是这样一张表:

问题是,如果我在单元格 A 上应用行跨度为 2,iTextSharp 不会渲染行跨度单元格,这意味着该单元格的高度与单元格 B 相同。代码如下:

    PdfPTable corporateTable = new PdfPTable(2);
    corporateTable.HeaderRows = 1;
    corporateTable.TotalWidth = pdfWidth - 50;

    PdfPCell vCell = new PdfPCell();
    vCell.Border = Rectangle.BOX;
    vCell.Rowspan = 2;
    vCell.Phrase = new Phrase("A", new Font(fontLh, 7f, 1, BaseColor.BLACK));
    corporateTable.CompleteRow();
    corporateTable.AddCell(vCell);


    PdfPCell vCellx = new PdfPCell();
    vCellx.Phrase = new Phrase("B", new Font(fontLh, 7f, 1, BaseColor.BLACK));
    vCellx.Colspan = 3;
    corporateTable.AddCell(vCellx);

    PdfPCell vCell1 = new PdfPCell();
    vCell1.Phrase = new Phrase("C", new Font(fontValue, 7f, 0, BaseColor.BLACK));
    corporateTable.AddCell(vCell1);

    corporateTable.WriteSelectedRows(0, -1, 100f, 100f, writer.DirectContent);
    document.Close();

怎么了?我正在使用最新版本的 dll。

【问题讨论】:

    标签: c# itext html-table


    【解决方案1】:

    嗯,基本答案是:它有效!如果再添加两个单元格,您会看到一个单元格(A 下方的那个)没有填充。

    但这不是您所期望的(顺便说一句,我也没有)。为了实现您想要的使用嵌套表,这意味着:

    • 创建一个包含两个列的表
    • 将单元格 A 插入表格中
    • 创建单元格 2
    • 用 1 个列再创建一个表
      • 将单元格 B 插入表 2
      • 将单元格 c 插入表 2
    • 将表格 2 插入单元格 2

    搜索itext rowspan,你会发现多个完全输入的例子。

    马里奥

    【讨论】:

    • 好的,但这意味着 iTextSharp 的工作方式与 html 不同,所以如果不嵌套表格,我就无法做到这一点?
    • 这是我发现的,是的。我也使用了您的代码,并且行跨度有效,只是对齐在行之间是不合理的。我可能会在某个时候检查我的 iText in Action 书(MESZ)。问候
    • 顺便说一句:如果您觉得答案有帮助,点个赞就好了 :-)
    • 好吧,我注意到如果我使用'document.Add(corporateTable);'来抚摸表格而不是 'corporateTable.WriteSelectedRows(0, -1, 0, -1, 300f, 100f, writer.DirectContent);'行跨单元格出现!
    • 它现在是否在其他两行之间对齐?我也使用了 Add,但它没有对齐。
    【解决方案2】:

    我认为它会起作用。尝试删除以下代码行:

    corporateTable.CompleteRow();
    ...
    vCellx.Colspan = 3;
    

    【讨论】:

      【解决方案3】:

      问题出在

      vCellx.Colspan = 3; 
      

      使用

      vCellx.Colspan = 1; 
      

      因为您声明了包含两列的 pdf 表。您已经添加了行跨度为 3 的一列,因此您只有另一列而不是三列

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-28
        • 2016-12-01
        • 2016-10-28
        • 1970-01-01
        • 1970-01-01
        • 2015-05-25
        • 2018-12-03
        相关资源
        最近更新 更多