如何用itextsharp更改PDF Formular的Button图标?

时间:2012-10-23 08:36:40

标签: c# pdf itextsharp fdf

我正在尝试使用itextsharp填写预定义的表单。一切都很好,除了添加图像。之前已经使用了Adobe的FDF工具包,该工具包已编译成.NET 1.1。这不再适用于.NET 4.0,我切换到了itextsharp。 以前添加图像的方式是通过以预定义的形式更改按钮的图标。这正确地旋转和缩放图像。不幸的是,我找不到任何使用itextsharp执行此操作的方法。 代码是:

FdfAcX_Doc.FDFSetAP("img", 0, "path\\to\\img.pdf", 1);

(文件:http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FDFtkRef.pdf

现在我正在尝试使用itextsharp并尝试手动添加图像,例如:

PdfContentByte pdfContentByte = pdfStamper.GetOverContent(1);
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(picfile);
iTextSharp.text.Rectangle imageRect = new iTextSharp.text.Rectangle(338f, 65f, 250f, 200f, 270);
img.ScaleToFit(imageRect.Width, imageRect.Height);
img.SetAbsolutePosition(65, 250);
pdfContentByte.AddImage(img);

但不幸的是,首先图像没有正确旋转,其次图像太大了。我尝试了几个设置,但无法找到正确的设置。有谁知道我做错了什么?

PDF表格可以在这里下载:http://www26.zippyshare.com/v/24914063/file.html

请帮助,我一直在这个问题上坐了一天,想不出更多。 谢谢!

1 个答案:

答案 0 :(得分:3)

您的代码示例与标题中的问题不一致。

在您的代码示例中,您要将图像添加到页面内容中。在标题中,您要求替换按钮字段中的图标。按钮字段不是内容的一部分。它们使用窗口小部件注释进行可视化。

我希望代码看起来像这样:

AcroFields form = stamper.AcroFields;
PushbuttonField ad = form.GetNewPushbuttonFromField(buttonFieldName);
ad.Layout = PushbuttonField.LAYOUT_ICON_ONLY;
ad.ProportionalIcon = true;
ad.Image = Image.GetInstance(pathToNewImage);
form.ReplacePushbuttonField("advertisement", ad.Field);