【问题标题】:In iText, how to set the rowspan of a right-columned table cell?在 iText 中,如何设置右列表格单元格的行跨度?
【发布时间】:2012-04-20 14:31:20
【问题描述】:

我需要像这样画一张桌子。

---------------
|  A   |   C  |
|------|      |
|  B   |      |
---------------      

以下代码不起作用。它创建一个单行表格,而不绘制“C”单元格:

PdfPTable table = new PdfPTable(2);
table.addCell("A");
table.addCell("B");
PdfPCell cell = new PdfPCell(new Phrase("C"));
cell.setRowspan(2);
table.addCell(cell);

绘制对面的表格(左侧的行跨单元格)可以正常工作。

我注意到一个类似的问题here,但上下文不同(我不是在开发国际应用程序)所以我想我可以重新表述一下这个问题。

【问题讨论】:

    标签: java itext


    【解决方案1】:

    表格总是从左到右,从上到下绘制,所以你需要添加A,然后是C,最后是B

    PdfPTable table = new PdfPTable(2);
    table.addCell("A");
    PdfPCell cell = new PdfPCell(new Phrase("C"));
    cell.setRowspan(2);
    table.addCell(cell);
    table.addCell("B");
    

    iText 要求计算表格中的所有单元格。如果缺少任何单元格,它将跳过整行。您的原始代码将 A 添加到 R1C1,然后将 B 添加到 R1C2,然后创建了一个新行并向其中添加了一个单元格,因为它是寡妇,所以被修剪掉了。

    【讨论】:

    • 这种处理添加单元格的方式,其中一行中的单元格数必须与表格中定义的列数匹配;否则,该行将被修剪...伙计,这不好! :) 我快疯了,尝试了谷歌搜索中的每一个措辞,以了解为什么我的最后一行没有被添加到表格中。我的行只有一个左列(一张图片),你的解释很中肯。我必须添加一些数学来处理这个问题,因为行数是动态的——我可以有 3、5、7... 单元格。当谈到 iText 时,你就是那个男人。恭喜并再次感谢您。上帝保佑。
    • 我这样做是为了解决奇数单元格的具体问题:if (chapterAnswersGroups.Count() % 2 != 0) { pdfTable.AddCell(string.Empty); }
    【解决方案2】:

    你应该使用嵌套表:

    PdfPTable inner = new PdfPTable(1);
    inner.addCell("A");
    inner.addCell("B");
    
    PdfPTable outer = new PdfPTAble(2);
    outer.addCell(inner);
    outer.addCell("C");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 2011-08-26
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 2011-09-18
      相关资源
      最近更新 更多