【问题标题】:iText - PdfPTable RowSpan using mytable.writeSelectedRowsiText - 使用 mytable.writeSelectedRows 的 PdfPTable RowSpan
【发布时间】:2012-11-20 16:16:56
【问题描述】:

我正在使用 iText 5.1.3,我想在我的 Pdf 文档中添加一个标题。我使用了此处发布的已知解决方案:http://itextpdf.com/examples/iia.php?id=104

此解决方案使用PdfPageEventHelper 类,并重写方法onEndPage() 以在完成每一页后添加页眉。上面链接中提供的示例工作正常,因为它添加了一个表格作为文档的标题。我正在尝试用 1 个差异做同样的事情,我希望该表中的某些单元格具有 Rowspan 和/或 Colspan。

我试过了,发现使用table.writeSelectedRows()document.add(table) 不同的是Rowspan。这是我在onEndPage 中尝试做的一个示例:

PdfPTable mytable = new PdfPTable(3);
mytable.setTotalWidth(527);
PdfPCell cell1 = new PdfPCell(new Phrase("Hello"));
cell1.setColspan(2);
cell1.setRowspan(2);
mytable.addCell(cell1);

PdfPCell cell2 = new PdfPCell(new Phrase("Girls !"));
mytable.addCell(cell2);

PdfPCell cell3 = new PdfPCell(new Phrase("Boys !"));
mytable.addCell(cell3);

mytable.writeSelectedRows(0, -1, 34, 803, writer.getDirectContent());

而不是将左侧的单元格设为 2x2 并带有“Hello”,而是将“Hello”单元格设为 1x2 而不是 2x2

有什么想法吗?

【问题讨论】:

    标签: java itext


    【解决方案1】:

    嗯.. 我自己找到了解决方案:D 它只是将mytable.writeSelectedRows(0, -1, 34, 803, writer.getDirectContent()); 替换为以下内容:

    ColumnText column = new ColumnText(writer.getDirectContent());
    column.addElement(mytable);
    column.setSimpleColumn(-12, -20, 604, 803); // set LLx, LLy, URx, and URy of the header
    column.go();
    

    就是这样 :) 成功了 :)

    【讨论】:

      【解决方案2】:

      当我使用 iText-2.1.7 时,iText writeSelectedRows 不适用于 rowSpan,rowSpan 单元格不会增长到其他行,但它有一个解决方法。

      ArrayList tmp = table.getRows(0, table.getRows().size());
      table.getRows().clear();
      table.getRows().addAll(tmp);
      table.writeSelectedRows(0, -1, x, y, directContent);
      

      【讨论】:

        猜你喜欢
        • 2014-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-10
        • 1970-01-01
        相关资源
        最近更新 更多