在PDF文件上动态添加图像到iText

时间:2014-07-24 16:06:25

标签: itext

有人可以帮我解决我的代码中缺少的内容,我正在尝试将图像添加到PDF生成

    fillFieldValue(stamper.getAcroFields(),agntCertBean);
    Image image1 = Image.getInstance(bb);
    image1.scaleAbsolute(25f, 25f);
    PdfContentByte overContent = stamper.getOverContent(1);
    AcroFields form = stamper.getAcroFields();       
    AcroFields.FieldPosition fldPos = (AcroFields.FieldPosition)     
    form.getFieldPositions("ProfilePciture");
    overContent.addImage(image1);
    stamper.close();                                 
    reader.close();

1 个答案:

答案 0 :(得分:0)

看着你的代码而不需要付出太多的代价,我发现了两个主要的错误:

[1。]这条线路出了问题:

AcroFields.FieldPosition fldPos = (AcroFields.FieldPosition)form.getFieldPositions("ProfilePciture");

getFieldPositions()方法返回ListFieldPosition个元素,然后您将该列表转换为FieldPosition个对象。这不会起作用,你需要这样的东西:

AcroFields.FieldPosition fldPos = form.getFieldPositions("ProfilePicture").get(0);

[2.]你得到了图片领域的位置,但是你没有做任何事情!你没有设置图像的位置!

删除这两行:

image1.scaleAbsolute(25f, 25f);
PdfContentByte overContent = stamper.getOverContent(1);

在您获得字段位置后添加以下行:

Rectangle rect = fldPos.position;
image1.scaleToFit(rect.getWidth(), rect.getHeight());
image1.setAbsolutePosition(rect.getLeft(), rect.getBottom());
PdfContentByte overContent = stamper.getOverContent(fldPos.page);

在这些线条中,您可以缩放图像以使其适合字段,并设置图像的坐标。您还可以获得正确页面的PdfContentByte实例,而不是第一页。

您可能还有其他错误,但请先修复这些错误!