iTextSharp -动态添加的图像在Acrobat Pro中不显示,但在Foxit Reader中显示

本文关键字:显示 但在 Reader Foxit Pro Acrobat 动态 添加 图像 iTextSharp | 更新日期: 2023-09-27 18:16:41

我有一个带有XFA表单的PDF文件,我可以通过动态生成的XML文件成功地填充它。

现在我正在尝试插入一个图像(一个手工制作的JPG签名文件),为此我尝试了多种方法,"部分"运气

我试过了:如何将图像设置为现有pdf文件中的pdf字段?

这:如何在现有的PDF中插入带有iTextSharp的图像?

我的意思是"部分"运气,因为该图像在Foxit Reader中显示,但在acrobatpro中不显示。

任何帮助都将非常,非常感谢。

编辑:

这是我用用图像替换按钮字段的代码。

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中工作得很好,但我主要感兴趣的是acrobatpro。

iTextSharp -动态添加的图像在Acrobat Pro中不显示,但在Foxit Reader中显示

为了添加一个图像字段,我最终修改了XDP文件(在Adobe LiveCycle中)。然后,我用表示图像的Base64编码字符串填充该字段。多谢。

相关文章: