2013-03-27 77 views
3

我需要插入基於生成的條碼文件的圖像。試圖在c中插入圖像到pdf中#

我在使用iTextSharp的圖書館中,我可以在文本中通常填寫時的問題,如

PdfReader pdfReader = new PdfReader(oldFile); 
PdfStamper pdfStamper = new PdfStamper(pdfReader, outFile); 
AcroFields fields = pdfStamper.AcroFields; 
fields.SetField("topmostSubform[0].Page1[0].BARCODE[0]", "X974005-1"); 

但有一個領域,其中PDF格式,如果我點擊到它,它會提示我要的圖像插入字段,但我似乎無法以編程方式完成此操作。基於一些谷歌搜索,並在一個計算器頁面磕磕絆絆,我插入下面的代碼預期的期望它的工作:

string fieldName = "topmostSubform[0].Page1[0].BARCODE[0]"; 
string imageFile = "test-barcode.jpg"; 
AcroFields.FieldPosition fieldPosition = pdfStamper.AcroFields.GetFieldPositions(fieldName)[0]; 
PushbuttonField imageField = new PushbuttonField(pdfStamper.Writer, fieldPosition.position, fieldName); 
imageField.Layout = PushbuttonField.LAYOUT_ICON_ONLY; 
imageField.Image = iTextSharp.text.Image.GetInstance(imageFile); 
imageField.ScaleIcon = PushbuttonField.SCALE_ICON_ALWAYS; 
imageField.ProportionalIcon = false; 
imageField.Options = BaseField.READ_ONLY; 
pdfStamper.AcroFields.RemoveField(fieldName);    
pdfStamper.AddAnnotation(imageField.Field, fieldPosition.page); 

我遇到的問題是,雖然它消除如預期現有的場地,當我打開新創建的PDF文件我沒有看到這個新的按鈕字段與預期的圖像文件,而是一個空白,但是當我通過調試模式執行此操作時,我可以看到它至少拿起圖像文件的正確尺寸,所以我不知道我在這裏做錯了什麼。

請指教,謝謝。

回答

1

如果你讀了官方文件(即:my book),你會發現這個例子:ReplaceIcon.cs

您使用pdfStamper.AcroFields.RemoveField(fieldName);去除場,隨後您嘗試添加使用pdfStamper.AddAnnotation(imageField.Field, fieldPosition.page);

新領域

這是錯的。您應該使用pdfStamper.AcroFields.ReplacePushbuttonField(fieldname, imageField.Field);

ReplacePushbuttonField()方法在幕後複製大量設置。

+0

感謝布魯諾,工作就像一個魅力。 – jfalberg 2013-03-27 15:32:36