2014-07-24 48 views
0

能有人幫我什麼是我的代碼丟失,我想添加圖片到PDF生成添加圖片到iText的動態PDF文件

fillFieldValue(stamper.getAcroFields(),agntCertBean); 
    Image image1 = Image.getInstance(bb); 
    image1.scaleAbsolute(25f, 25f); 
    PdfContentByte overContent = stamper.getOverContent(1); 
    AcroFields form = stamper.getAcroFields();  
    AcroFields.FieldPosition fldPos = (AcroFields.FieldPosition)  
    form.getFieldPositions("ProfilePciture"); 
    overContent.addImage(image1); 
    stamper.close();         
    reader.close(); 
+0

這個問題提到「PDF生成」;代碼是關於「PDF操作」。 –

回答

0

看你的代碼,而不必付出太多出席,我看到了兩個重大錯誤:

[1]有什麼毛病此行:

AcroFields.FieldPosition fldPos = (AcroFields.FieldPosition)form.getFieldPositions("ProfilePciture"); 

getFieldPositions()方法返回的元素,並將該列表投射到FieldPosition對象。這是行不通的,你需要的東西是這樣的:

AcroFields.FieldPosition fldPos = form.getFieldPositions("ProfilePicture").get(0); 

[2]你明白了場的位置,但你沒有做任何事的!你沒有設置圖像的位置!所以它適合現場

Rectangle rect = fldPos.position; 
image1.scaleToFit(rect.getWidth(), rect.getHeight()); 
image1.setAbsolutePosition(rect.getLeft(), rect.getBottom()); 
PdfContentByte overContent = stamper.getOverContent(fldPos.page); 

在您縮放圖像,這些線條和你:

刪除這兩條線:

image1.scaleAbsolute(25f, 25f); 
PdfContentByte overContent = stamper.getOverContent(1); 

添加這些行你得到後場位置設置圖像的座標。您還可以從PdfContentByte實例獲取正確的頁面,而不是從第一頁開始。

您可能有其他錯誤,但請先修復這些錯誤!