2012-10-23 37 views
2

我正在尝试使用itextsharp填充预定义的表单。除了添加图像之外,所有的都很好。这已经在Adobe的FDF工具包中编译进了.NET 1.1。这不再适用于.NET 4.0,我切换到itextsharp。 之前添加图像的方式是通过以预定义的形式更改按钮的图标。旋转并正确缩放图像。不幸的是,我找不到任何方法来与itextsharp做到这一点。 代码为:如何使用itextsharp更改PDF Formular的按钮图标?

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

请帮帮忙,我一直坐在这个问题一天现在想不出什么了。 谢谢!

回答

4

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

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

我本来期望的代码看起来像这样:

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); 
+0

嘿,感谢您的回答。我很多不知道如何用替换方法来处理它,这就是为什么我试图手动将图像放置在那里。你的代码工作得很好,除了宽度不是按比例缩放到高度,即使很难,我设置了以下字段:ad.Layout = PushbuttonField.LAYOUT_ICON_ONLY; ad.ScaleIcon = PushbuttonField.SCALE_ICON_ALWAYS; ad.ProportionalIcon = true; ad.IconFitToBounds = true; 有什么想法? – xXx

+0

请注明:您是否认为宽高比不受尊重?或者你是否说宽高比不应该得到尊重?如果你可以澄清,我会看看代码中看哪个选项触发哪些行为。 –

+0

这Zippyshare的东西不适合我。 –