2015-11-08 24 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

對代碼進行了一些更改後,我在文本字段位置獲得了圖像。 –