不幸的是,您没有提供足够的代码来重现该问题。因此,我只能给出一个示例来表明行跨度可以正常工作:
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("span-in-table.pdf"));
document.open();
PdfPTable table = new PdfPTable(3);
table.addCell("A");
PdfPCell cell = new PdfPCell(new Phrase("B"));
cell.setColspan(2);
cell.setRowspan(2);
table.addCell(cell);
table.addCell("C");
table.addCell("D");
table.addCell("E");
table.addCell("F");
document.add(table);
document.close();
此示例生成此表:
这看起来和预期的差不多。
或者,如果您更喜欢左侧的 2x2 单元格:
...
PdfPTable table = new PdfPTable(3);
PdfPCell cell = new PdfPCell(new Phrase("A"));
cell.setColspan(2);
cell.setRowspan(2);
table.addCell(cell);
table.addCell("B");
table.addCell("C");
table.addCell("D");
table.addCell("E");
table.addCell("F");
document.add(table);
...
导致
在 iText in Action 书中,作者说 - “PdfPTable/PdfPCell 中没有 setRowspan() 方法。” 如果这种方法不存在,NetBeans 怎么不抛出错误?
嗯,那是 iText in Action 的第一版。在第二版中,您可以阅读:
曾经有一段时间不支持行跨度PdfPCells
。解决此问题的唯一方法是使用嵌套表。
( iText in Action - Second Edition 中的第 109 页)
您可以在此处找到第 4 章以表格形式组织内容 的示例。