iText - 使用mytable.writeSelectedRows的PdfPTable RowSpan

时间:2012-12-03 07:55:13

标签: java itext

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

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

我尝试过,发现table.writeSelectedRows()使用document.add(table)Rowspan的{​​{1}}不同。这是我在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”的2x2,我将“Hello”单元格设为1x2而不是2x2

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

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

就是这样:)工作:))

答案 1 :(得分:0)

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