.NET Core中如何使用iText7将PDF域值替换为图片?
iText7中替换按钮域为图片的实现方案
在iText7中没有直接对应iTextSharp里PushbuttonField的类,但可以通过PdfButtonFormField配合相关API实现相同功能——将指定按钮域替换为图片,且仅显示图片、保持比例缩放。
完整iText7实现代码
var pdfReader = new PdfReader(pdfPath1); var fstream = new FileStream(newFile, FileMode.Create); var pdfWriter = new PdfWriter(fstream); var pdfDocument = new PdfDocument(pdfReader, pdfWriter); var acroForm = PdfAcroForm.GetAcroForm(pdfDocument, true); if (!string.IsNullOrEmpty(sign1)) { // 获取目标按钮域 PdfButtonFormField buttonField = (PdfButtonFormField)acroForm.GetField("imgSign1"); if (buttonField != null) { // 加载图片并转换为PDF可用的XObject ImageData imageData = ImageDataFactory.Create(sign1); PdfImageXObject imageXObject = new PdfImageXObject(imageData); // 设置按钮仅显示图标、保持图片比例 buttonField.SetLayout(PdfButtonFormField.LAYOUT_ICON_ONLY); buttonField.SetProportionalIcon(true); // 将图片绑定到按钮域 buttonField.SetImage(imageXObject); } } // 关闭资源 pdfDocument.Close(); pdfReader.Close(); fstream.Close();
代码对应说明
- 获取按钮域:通过
acroForm.GetField()获取目标按钮,强制转换为PdfButtonFormField - 图片处理:用
ImageDataFactory加载本地图片,包装为PdfImageXObject适配PDF环境 - 布局配置:
SetLayout(PdfButtonFormField.LAYOUT_ICON_ONLY)对应iTextSharp的LAYOUT_ICON_ONLY,SetProportionalIcon(true)对应ProportionalIcon = true - 绑定图片:通过
SetImage()方法将图片设置为按钮的显示内容
原iTextSharp实现代码
var pdfReader = new PdfReader(pdfPath1); string outputfile = string.Empty; var pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create)); var pdfFormFields = pdfStamper.AcroFields; outputfile = string.Empty; if (!String.IsNullOrEmpty(sign1)) { PushbuttonField pushbuttonField = pdfFormFields.GetNewPushbuttonFromField("imgSign1"); pushbuttonField.Layout = PushbuttonField.LAYOUT_ICON_ONLY; pushbuttonField.ProportionalIcon = true; pushbuttonField.Image = iTextSharp.text.Image.GetInstance(sign1); pdfFormFields.ReplacePushbuttonField("imgSign1", pushbuttonField.Field); }
内容的提问来源于stack exchange,提问作者vikas chaudhary
相关产品推荐
相关产品推荐

