【问题标题】:iTextSharp GetFieldPositions to SetSimpleColumniTextSharp GetFieldPositions 到 SetSimpleColumn
【发布时间】:2011-08-17 16:12:54
【问题描述】:
【问题讨论】:
标签:
c#
.net
pdf
itextsharp
itext
【解决方案1】:
我认为这样做有两个原因。 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<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;
}