我正在使用iText为数据库中的数据生成Pdf报告...
pdfs页面的标题是一个动态添加图像的图像,例如生成日期...
任何人都知道我们是否可以在itext中将背景图像设置为PdfPTable类型的表。
由于
答案 0 :(得分:4)
我知道它很晚但可能会帮助别人。这是实现它的方法。
创建一个BGClass类,实现PdfPCellEvent并输入以下方法。
@Override
public void cellLayout(PdfPCell arg0, Rectangle arg1, PdfContentByte[] arg2) {
try {
PdfContentByte pdfContentByte = arg2[PdfPTable.BACKGROUNDCANVAS];
Image bgImage = Image.getInstance("URL_TO_YOUR_IMAGE");
pdfContentByte.addImage(bgImage, arg1.getWidth(), 0, 0, arg1
.getHeight(), arg1.getLeft(), arg1.getBottom());
} catch (BadElementException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
在您创建PDF的主类中,pdfpCell.setCellEvent(new BGClass());其中pdfpCell是您想要背景图像的单元格。
答案 1 :(得分:0)
Prabhat的技术有一两个缺陷。
最好使用PdfPTableEvent
。请注意,如果您的表跨多个页面,则将为每个表调用一次事件处理程序。 heights
和widths
参数有点时髦。每个中的第一个值是绝对起始位置。剩下的值确实是高度和宽度。方便,但变量名称有点误导。
请记住,图像的每个实例都意味着PDF中该图像的另一个副本。尽可能保存并重复使用它们。