Add image to acrofield in iText?

后端 未结 3 1215
逝去的感伤
逝去的感伤 2020-12-09 12:40

I\'m trying to fill PDF using acrofields, I\'m able to add string data perfectly, but having issues in adding images to acrofields. This is my code for adding string data..

相关标签:
3条回答
  • 2020-12-09 12:59

    You can try add this with your code for adding Image

    PdfContentByte content = stamper.getOverContent(reader.getNumberOfPages());
    Image image = Image.getInstance(new URL("E:/signature/signature.png"));
    image.setAbsolutePosition(450,650);
    image.scaleAbsolute(200,200);
    content.addImage(image);
    reader.close();
    return output.toByteArray();
    
    0 讨论(0)
  • 2020-12-09 13:01

    The "official" way to do this, is to have a Button field as placeholder for the image, and to replace the "icon" of the button as described in my book:

    PushbuttonField ad = form.getNewPushbuttonFromField(imageFieldName);
    ad.setLayout(PushbuttonField.LAYOUT_ICON_ONLY);
    ad.setProportionalIcon(true);
    ad.setImage(Image.getInstance("E:/signature/signature.png"));
    form.replacePushbuttonField("advertisement", ad.getField());
    

    See ReplaceIcon.java for the full code sample.

    DISCLAIMER: I'm the original developer of iText and the author of the "iText in Action" books.

    0 讨论(0)
  • 2020-12-09 13:03

    The following solution worked:

    public static void addImage(PdfStamper stamper,AcroFields form,String field,String fieldValue){
        try{
            System.out.println("Field "+field);
        java.util.List<AcroFields.FieldPosition> photograph = form.getFieldPositions(field);
        if(photograph!=null && photograph.size()>0){
        Rectangle rect= photograph.get(0).position;
        //if(StringUtils.isNotBlank(fieldValue)){
        Image img = Image.getInstance(fieldValue);
        img.scaleToFit(rect.getWidth(), rect.getHeight());
        img.setBorder(2);
        img.setAbsolutePosition(
        photograph.get(0).position.getLeft() + (rect.getWidth() - img.getScaledWidth() )
        , photograph.get(0).position.getTop() - (rect.getHeight()));
        PdfContentByte cb = stamper.getOverContent((int)photograph.get(0).page);
        cb.addImage(img);
        //}
        }
        }catch(Exception e){
            e.printStackTrace();
        }
        }
    

    calling the above method:

    addImage(stamper, form, "CustomerSign", "E:/signature/signature.png");
    

    where CustomerSign is AcroField

    0 讨论(0)
提交回复
热议问题