有人可以帮我解决我的代码中缺少的内容,我正在尝试将图像添加到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();
答案 0 :(得分:0)
看着你的代码而不需要付出太多的代价,我发现了两个主要的错误:
[1。]这条线路出了问题:
AcroFields.FieldPosition fldPos = (AcroFields.FieldPosition)form.getFieldPositions("ProfilePciture");
getFieldPositions()
方法返回List
个FieldPosition
个元素,然后您将该列表转换为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
实例,而不是第一页。
您可能还有其他错误,但请先修复这些错误!