结合rowspan和colspan的iText - PDFPTable

时间:2014-06-02 08:03:07

标签: java pdf itext pdfptable

使用日历项目并使用iText生成pdf以打印约会。我可以绘制一个带有colspan的单元格和一个带有rowspan的单元格,但我无法将它组合在一起。表的宽度为4个单元格。我希望实现这样的目标:

(A)(B)(C)(C)

(d)(E)(C)(C)

所以(1,1),(1,2)和(2,1)(2,2)是常规细胞。但是(1,3)中应该有一个细胞覆盖(1,3)(1,4)(2,3)和(2,4),因此它具有2的spspan和2的行距。

当前代码:

  

PdfPTable table = new PdfPTable(4);

     

PdfPCell cell = new PdfPCell(new Phrase(“1,1”));

     

table.addCell(细胞);

     

cell = new PdfPCell(new Phrase(“1,2”));

     

table.addCell(细胞);

     

PdfPCell cell23 = new PdfPCell(new Phrase(“multi 1,3 and 1,4”));

     

cell23.setColspan(2);

     

cell23.setRowspan(2);

     

table.addCell(cell23);

     

cell = new PdfPCell(new Phrase(“2,1”));

     

table.addCell(细胞);

     

cell = new PdfPCell(new Phrase(“2,2”));

     

table.addCell(细胞);

     

// 2,3和2,4应该被填充,因为1,3有行2和colspan 2。

     

// table.completeRow(); //无效

然而,这会产生错误:

  

ExceptionConverter:java.io.IOException:文档没有页面。

如果我没有开始创建第二行,它只是绘好(1行,并且(1,3)上的单元格具有2的colspan。因为没有第二行,所以rowspan(2)没有影响。 任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:2)

乍一看,我说:你得到的文件没有页面"例外,因为您未向文档添加任何内容。我不明白:

document.add(table);

您的代码段中的任何位置。

我已将您的代码复制/粘贴到完整示例中,我在此处发布了完整的示例:ColspanRowspan。生成的PDF看起来像this

enter image description here

这似乎是理想的行为。我只能想到两个不同之处:(1)你忘了添加实际的表格(这是我最初的答案),或者(2)你正在使用强大的旧版本iText,其中rowspan不是'完全支持。