Sha*_*all 2 .net c# pdf itext itextsharp
我正在使用最新版本的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];
}
Run Code Online (Sandbox Code Playgroud)
应转换为:
IList<AcroFields.FieldPosition> 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9437 次 |
| 最近记录: |