如何在iText中设置PdfPCell中的背景图像?

时间:2014-06-11 12:29:04

标签: pdf pdf-generation itext document pdfptable

我目前正在使用iText生成PDF报告。我想在PdfPCell中将中等大小的图像设置为背景,而不是使用背景色。这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用iText 5.5.1 here找到有关如何执行此操作的示例。您需要创建自己的PdfPCellEvent接口实现,例如:

class ImageBackgroundEvent implements PdfPCellEvent {

    protected Image image;

    public ImageBackgroundEvent(Image image) {
        this.image = image;
    }

    public void cellLayout(PdfPCell cell, Rectangle position,
            PdfContentByte[] canvases) {
        try {
            PdfContentByte cb = canvases[PdfPTable.BACKGROUNDCANVAS];
            image.scaleAbsolute(position);
            image.setAbsolutePosition(position.getLeft(), position.getBottom());
            cb.addImage(image);
        } catch (DocumentException e) {
            throw new ExceptionConverter(e);
        }
    }

然后,您需要创建此事件的实例并将其声明为需要此背景的单元格:

Image image = Image.getInstance(IMG1);
cell.setCellEvent(new ImageBackgroundEvent(image));

此代码已使用最新版本的iText进行测试,结果如this。您在包名称(com.lowagie)中使用了我的名字(Lowagie)的iText版本。这意味着此样本可能有效,也可能无效。我们不知道,我们不会测试您使用的版本has been declared EOL years ago. It is no longer supported.