2015-11-08 61 views
1

我有一个PDF文档,其中有acro文本字段,它已经被共享给客户端。现在,客户端想要在其中一个文本字段中插入签名图像。我的经理让我尝试一种方法来做同样的事情。我的想法是将文本字段位置上的图像替换为图像大小。在acro文本字段位置显示图像

对于更换PDF的ACRO文本字段成图像,我基于给定的图像的宽度和高度,我需要改变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); 

任何人都可以尝试如下,我的逻辑是否与itext pdf库一起工作。让我知道是否有任何想法替换acro文本字段与图像

回答

0

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

因此,您最好的选择是调整图像的大小以适应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?的回答中有所描述。这个答案解释了做你想做什么的标准方法,但是它要求你想添加图像的字段是一个按钮字段(并且根据你的问题,它似乎是一个文本字段)。
+0

对代码进行了一些更改后,我在文本字段位置获得了图像。 –