【问题标题】:itext image field in fillable form可填写表单中的 itext 图像字段
【发布时间】:2012-12-07 01:21:32
【问题描述】:

在 itext 2 中,以下代码运行良好,在 itext 5 中失败。 有人有如何将图像添加到 PDF 上的图像字段的示例吗?

这是我的代码...

public static void atsSetFieldImage(AcroFields form, PdfStamper stamper, String fieldName, Image img) 
{
    try 
    {
        float[] photograph = form.getFieldPositions(fieldName);
        Rectangle rect = new Rectangle(photograph[1]
                           , photograph[2]
                           , photograph[3]
                           , photograph[4]);

        //Image img = Image.getInstance(imageName);
              image1.scaleToFit(rect.getWidth(), rect.getHeight());
              image1.setAbsolutePosition(
                                    photograph[1] + (rect.getWidth() - image1.getScaledWidth()) / 2
                                  , photograph[2] + (rect.getHeight() - image1.getScaledHeight()) / 2);

        PdfContentByte cb = stamper.getOverContent((int)photograph[0]);
                       cb.addImage(image1);

    }
    catch(Exception e) 
    {
        //e.printStackTrace();
    }
} 

【问题讨论】:

    标签: java pdf itext


    【解决方案1】:

    如何将图像添加到 acroForm 字段:

    Rectangle rect = form.getFieldPositions(fieldName)[0].position;
    int page = form.getFieldPositions(fieldName)[0].page;
    //Scale it
    image1.scaleAbsolute(rect.getWidth(), rect.getHeight());
    //Position it
    img.setAbsolutePosition(rect.getLeft(), rect.getBottom());
    //Add it to the correct page
    stamper.getOverContent(page).addImage(img);
    

    【讨论】:

    • 您现在获得了一个 FieldPosition 对象,它为您提供一个 Rectangle 和一个页码,而不是使用浮点值数组。这比我们以前的要好得多。
    • 我尝试了这个并且 form.getFieldPositions 错误并说它需要是一个列表,我尝试将它转换为一个列表并且出现更多错误。
    • 如果重要的话,我使用的是 iText 5.3.4,这是我得到的确切错误“表达式的类型必须是数组类型,但它解析为 List”
    猜你喜欢
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多