我有一个带有 XFA 表单的 PDF 文件,我可以通过动态生成的 XML 文件成功填充该文件。
现在我正在尝试插入一个图像(一个手工制作的 JPG 签名文件),为此我尝试了多种方法,“部分”运气。
我试过这个: 如何将图像设置为现有 pdf 文件中的 pdf 字段?
还有这个: 如何在现有 PDF 中插入带有 iTextSharp 的图像?
我的意思是“部分”运气,因为图像确实显示在 Foxit Reader 中,但没有显示在 Acrobat Pro 中。
任何帮助将不胜感激。
编辑:
这是我用来用图像替换按钮字段的代码。
private void InsertSignatureIntoBOL(string inputFile, string fieldName, byte[] imageFile, string outputFile)
{
using (PdfStamper stamper = new PdfStamper(new PdfReader(inputFile), File.Create(outputFile)))
{
AcroFields.FieldPosition fieldPosition = stamper.AcroFields.GetFieldPositions(fieldName)[0];
PushbuttonField imageField = new PushbuttonField(stamper.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;
stamper.AcroFields.RemoveField(fieldName);
stamper.AddAnnotation(imageField.Field, fieldPosition.page);
stamper.Close();
}
}
我还尝试使用此代码将图像添加到绝对位置”
var pdfContentByte = stamper.GetOverContent(1);
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(Convert.FromBase64String(SignatureHiddenField.Value));
image.SetAbsolutePosition(100, 100);
pdfContentByte.AddImage(image, false);
使图像显示在 Acrobat Pro 中的唯一方法是展平表单,但我也在同一个表单中填充 XFA 字段,当展平时,XFA 字段显示为空。正如我所提到的,它在 Foxit Phantom 中运行得非常好,但我的主要兴趣是使用 Acrobat Pro。
任何帮助将不胜感激。