我認爲這是有兩個原因。 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;
}
正是我一直在尋找,謝謝! –