在日历项目上工作并使用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);
cell = new PdfPCell(new Phrase(" 1,2"));
table.addCell(cell);
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);
cell = new PdfPCell(new Phrase(" 2,2"));
table.addCell(cell);
// 2,3 and 2,4 should be filled because 1,3 has rowspan 2 and colspan 2.
//table.completeRow(); //no effect
但是会产生错误:
ExceptionConverter: java.io.IOException: The document has no pages.
如果我没有开始创建第二行,它只是绘制好(1行,并且(1,3)上的单元格具有2的colspan。因为没有第二行,所以rowspan(2)没有效果。
任何帮助表示赞赏。 谢谢
乍一看,我会说:你得到一个"文档没有页面"的例外,因为你没有在文档中添加任何内容。 我没有看到:
document.add(table);
代码段中的任何位置。
我已将您的代码复制/粘贴到一个完整的示例中,我在此处发布了完整的示例:ColspanRowspan。 生成的PDF如下所示:
这似乎是理想的行为。 我只能想到两个不同之处:(1)你忘了添加实际的表(这是我最初的答案),或者(2)你正在使用强大的旧版iText,其中rowspan不完全支持。
它只是一个片段,我稍后会这样做。 正如我所说,如果我离开第二排,一般结构没有问题。 它只添加第二行给我带来问题。
在根据您的代码编写概念验证后,我更新了我的答案。
谢谢。 我想这是版本,因为我100%肯定document.add(表) - 我只是注释掉了代码段中的第2行然后它显示了。 由于迫切需要切换到低级API绘图,但很高兴看到它实际上按照我的预期工作。