Я думаю, что это было сделано по двум причинам.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;
}