我试图通过扩展PdfPageEventHelper
类来为表添加标题。所以我试着用onEndPage()
。我得到了正确的标题,但rowspan
属性不适用于该表。
我正在尝试使用下面的代码,
PdfPTable table1 = new PdfPTable(3);
try{
table1.setWidths(new int[]{15,20,20});
table1.setLockedWidth(true);
table1.setTotalWidth(700);
Image image = Image.getInstance("images.png");
PdfPCell cell = new PdfPCell(new Paragraph("{Month}", font3));
PdfPCell cell2 = new PdfPCell(image, false);
cell.setColspan(2);
cell.setBorder(PdfPCell.NO_BORDER);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell2.setBorder(PdfPCell.NO_BORDER);
cell2.setRowspan(2);
PdfPCell cell3 = new PdfPCell(new Paragraph("Mr Fname Lname", font3));
cell3.setColspan(2);
cell3.setBorder(PdfPCell.NO_BORDER);
cell3.setHorizontalAlignment(Element.ALIGN_LEFT);
table1.addCell(cell);
table1.addCell(cell2);
table1.addCell(cell3);
table1.writeSelectedRows(0, -1, 20 , 820, writer.getDirectContent());
}
更新
当我运行您在示例中提供给我的相同代码时,它会打印如下所示的pdf,
答案 0 :(得分:1)
你的代码中有很多尴尬的行。例如:您正在为表的默认单元格定义属性,但您没有在任何地方使用默认单元格:您只使用cell
,cell2
和cell3
。这三个单元格是使用PdfPCell
构造函数创建的,这意味着它们不会从默认单元格继承任何内容。
如果您的指控“它不起作用”是指默认单元格的属性,那么您的指控是错误的:您不会在任何地方使用默认单元格。
如果使用writeSelectedRows()
方法添加表格,则无需锁定宽度。您将表格宽度定义为700,但是您确定700适合页面的宽度吗?
您的图片尺寸是多少?由于您没有缩放图像以适合单元格,因此可能会超出单元格的大小。
我已经简化了代码,删除了上面提到的所有无用的代码,最后我得到了RowspanAbsolutePosition示例。 resulting PDF file looks perfectly normal,从而证明您的问题“行跨度不适用于writeSelectedRows()方法”的标题不正确。
PS:定义两列并且同时为该列中的所有单元格提供两个colspan是没有意义的。使用正常细胞将其减少到一列是有意义的。