iTextSharp - 动态添加的图像未在Acrobat Pro中显示,但它确实在Foxit Reader中显示

时间:2013-05-31 22:43:41

标签: c# itextsharp itext

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

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

我试过这个: How can i set an image to a pdf field in existing pdf file?

这个: How can I insert an image with iTextSharp in an existing PDF?

我的意思是“部分”运气,因为图像确实在福昕阅读器中显示,但不会在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。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

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