0

我试图通过扩展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,

在此处输入图像描述

4

1 回答 1

1

您的代码中有很多尴尬的行。例如:您正在为表格的默认单元格定义属性,但您没有在任何地方使用默认单元格:您只使用cell,cell2cell3. 这三个单元格是使用PdfPCell构造函数创建的,这意味着它们不会从默认单元格继承任何内容。

如果您的指控“它不起作用”是指默认单元格的属性,那么您的指控是错误的:您没有在任何地方使用默认单元格。

如果使用该writeSelectedRows()方法添加表格,则无需锁定宽度。您定义了 700 的表格宽度,但您确定 700 适合页面的宽度吗?

你的图片尺寸是多少?由于您没有缩放图像以适合单元格,因此它可能会超出单元格的大小。

我已经简化了您的代码,删除了上面提到的所有无用代码,最后得到了RowspanAbsolutePosition示例。生成的PDF 文件看起来非常正常,因此证明您的问题“行跨度不适用于 writeSelectedRows() 方法”的标题不正确。

PS:定义两列并同时给该列中的所有单元格一个colspan 2是没有意义的。将其减少为包含正常单元格的一列是有意义的。

于 2014-05-19T08:07:04.963 回答