iText – 使用mytable.writeSelectedRows的PdfPTable RowSpan

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

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

我试过,发现当涉及到Rowspan时,使用table.writeSelectedRows()document.add(table)不同。 这是我在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()); 

而不是左边的单元格为“Hello”的2×2,我得到“Hello”单元格为1×2而不是2×2

有任何想法吗?

好吧..我自己找到了解决方案: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(); 

就是这样:)工作:)

当我使用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);