在 acro 文本字段位置显示图像

Showing image on a acro text field position

我有一个 PDF 文档,其中包含已共享给客户的宏文本字段。现在客户想要在其中一个文本字段中插入签名图像。我的经理让我尝试一种方法来实现 same.My 想法是替换文本字段位置顶部的图像并将文本字段调整为图像大小。

为了将 pdf 的 acro 文本字段替换为图像,我正在尝试如下

1.Finding the text field by its field id 

String position = null; 
List<FieldPosition> fieldPositons = form.getFieldPositions("50106");
                    for (FieldPosition position :fieldPositons) {
                        this.position = position.position;
                    }
2. Setting the image into that position of text field
     Image image = Image.getInstance("ImageFileName");
Float dimensions = position.split("x");
image.setAbsolutePosition(dimensions[0], dimensions[1]);    
content.addImage(image);

根据给定的图像宽度和高度,我需要更改 acro 文本字段的宽度和高度。

任何人都可以尝试如下,我的逻辑是否适用于 itext pdf 库。让我知道是否有任何想法用图像

替换 acro 文本字段

更改 AcroField 的尺寸绝不是一个好主意,因为 PDF 中的所有内容都是在绝对位置添加的。当您更改字段的维度时,您可能会面临与其他内容重叠的风险。

因此,您最好的选择是使图像的大小适应 AcroField 的大小。正如您已经指出的那样,您可以获得这样的字段位置:

AcroFields.FieldPosition f = form.GetFieldPositions("50106")[0];

请注意,将其设为 string 并不是一个好主意。您可以像这样使用 FieldPosition 对象:

int page = f.page;
Rectangle rect = f.position;

您可以像这样缩放和定位图像:

Image image = Image.getInstance("ImageFileName");
image.ScaleToFit(rect.Width, rect.Height);
image.SetAbsolutePosition(rect.Left, rect.Bottom);

ScaleToFit() 方法将以适合表单域尺寸的方式缩放图像,尊重图像的原始纵横比(您不想添加 拉伸图像)。

您需要 page 变量才能将图像添加到正确的页面:

PdfContentByte canvas = stamper.GetOverContent(page);
canvas.AddImage(image);

重要提示:

  • 如果您按上述方式添加图像,则需要删除该字段(如果您展平 表单,这会自动发生)。
  • 如果表单域是一个按钮,那么你不应该使用上面的代码。相反,您应该替换按钮的图标。这在我对问题的回答中有所描述 How to change a Button Icon of a PDF Formular with itextsharp? 这个答案解释了做你想做的事情的标准方法,但它要求你要添加图像的字段是一个按钮字段(并且基于关于你的问题,它似乎是一个文本字段。