如何使用iText库在PDF格式的表格中应用背景图像?

时间:2012-11-19 11:05:10

标签: java itext

我正在使用iText库创建PDF,但无法为PDF中的表格设置背景图像。

如下图enter image description here

修改

目前我用它来设置背景,将其设置图像设置为绝对位置,我想将其设置为相对于表格

class CellBackgroundPic  implements PdfPTableEvent {

Activity mActivity;
public CellBackgroundPic (Activity Activity){

    this.mActivity=Activity;

}
Image bgImage;


public void tableLayout(PdfPTable table, float[][] widths, float[] heights,
        int headerRows, int rowStart, PdfContentByte[] canvases){
    PdfContentByte pdfContentByte = canvases[PdfPTable.BACKGROUNDCANVAS];
    Drawable   myImage  = mActivity.getResources().getDrawable(R.drawable.table_bg);

      Bitmap bitmap = ((BitmapDrawable) myImage).getBitmap();
       ByteArrayOutputStream stream = new ByteArrayOutputStream();
       bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
       byte[] bitmapdata = stream.toByteArray();
       try {
        bgImage = Image.getInstance(bitmapdata);
        bgImage.setAbsolutePosition(330f, 642f);
        pdfContentByte.addImage(bgImage);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
}

1 个答案:

答案 0 :(得分:0)

可能有不同的方法。

一种方法是使用用图像创建的图案颜色,并将该图案颜色用作背景颜色。但是,这似乎与您的需求不匹配。

根据您的示例,我建议使用如下所示的表事件: http://itextpdf.com/examples/iia.php?id=93

在此示例中,行的背景颜色是在tableLayout()方法中绘制的。您需要调整此方法,而不是绘制彩色矩形,您需要在适当的坐标处添加图像。