试图在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中,如果我点击它,它会提示我插入到字段中的图像,但我似乎无法以编程方式完成此操作。 根据一些谷歌搜索和绊倒stackoverflow页面,我插入以下代码,期望它按预期工作:

 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文件时,我没有看到这个带有预期图像文件的新按钮字段,而是作为空白但是当我通过调试执行此操作时模式我可以看到它至少会拾取图像文件的正确尺寸,所以我不知道我在这里做错了什么。

请指教,谢谢。

如果你阅读官方文档(即: 我的书 ),你会发现这个例子: ReplaceIcon.cs

您正在使用pdfStamper.AcroFields.RemoveField(fieldName);删除该字段pdfStamper.AcroFields.RemoveField(fieldName); 然后尝试使用pdfStamper.AddAnnotation(imageField.Field, fieldPosition.page);添加新字段pdfStamper.AddAnnotation(imageField.Field, fieldPosition.page);

那是错的。 您应该使用pdfStamper.AcroFields.ReplacePushbuttonField(fieldname, imageField.Field);替换该字段pdfStamper.AcroFields.ReplacePushbuttonField(fieldname, imageField.Field);

ReplacePushbuttonField()方法在幕后复制大量设置。