我目前正在使用iText生成PDF报告。我想在PdfPCell
中将中等大小的图像设置为背景,而不是使用背景色。这可能吗?
答案 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.