iTextSharp GetFieldPositions到SetSimpleColumn

我正在使用最新版本的iTextSharp: http : //sourceforge.net/projects/itextsharp/

我在使用GetFieldPositions(fieldName)获取一些AcroField的位置后尝试使用ColumnText.SetSimpleColumn。

我可以找到的所有示例都显示GetFieldPositions返回一个float []但是这似乎不再是这种情况了。 它现在似乎是返回IList,它没有(根据Visual Studio)隐式转换为float []。

在0索引处的返回值内部是一个Rectangle的位置成员,但是由于我看到的示例在返回的float []上执行数学运算,我不确定GetFieldPostions中返回值的值是什么时候使用的使用SetSimpleColumn。 这是我正在引用的一篇文章: http : //blog.dmbcllc.com/2009/07/08/itextsharp-html-to-pdf-positioning-text/

最简单的接受答案是如何将值从GetFieldPositions转换为SetSimpleColumn。

谢谢!

我认为这样做有两个原因。 1), GetFieldPositions()实际上可以返回多个项目,因为你可以在技术上拥有多个具有相同名称的字段和2),原始数组方法需要知道“魔术数组”才能找到什么。 您看到的所有代码几乎都假设GetFieldPositions()只返回一个项目,99%的时间都是如此。 您现在可以使用普通属性,而不是使用索引。

所以您发布的链接中的代码:

 float[] fieldPosition = null; fieldPosition = fields.GetFieldPositions("fieldNameInThePDF"); left = fieldPosition[1]; right = fieldPosition[3]; top = fieldPosition[4]; bottom = fieldPosition[2]; if (rotation == 90) { left = fieldPosition[2]; right = fieldPosition[4]; top = pageSize.Right - fieldPosition[1]; bottom = pageSize.Right - fieldPosition[3]; } 

应转换为:

 IList fieldPositions = fields.GetFieldPositions("fieldNameInThePDF"); if (fieldPositions == null || fieldPositions.Count <= 0) throw new ApplicationException("Error locating field"); AcroFields.FieldPosition fieldPosition = fieldPositions[0]; left = fieldPosition.position.Left; right = fieldPosition.position.Right; top = fieldPosition.position.Top; bottom = fieldPosition.position.Bottom; if (rotation == 90) { left = fieldPosition.position.Bottom; right = fieldPosition.position.Top; top = pageSize.Right - fieldPosition.position.Left; bottom = pageSize.Right - fieldPosition.position.Right; }