public float[] GetFieldPositions(String name) {
Item item = GetFieldItem(name);
if (item == null)
return null;
float[] ret = new float[item.Size * 5];
int ptr = 0;
for (int k = 0; k < item.Size; ++k) {
try {
PdfDictionary wd = item.GetWidget(k);
PdfArray rect = wd.GetAsArray(PdfName.RECT);
if (rect == null)
continue;
Rectangle r = PdfReader.GetNormalizedRectangle(rect);
int page = item.GetPage(k);
int rotation = reader.GetPageRotation(page);
ret[ptr++] = page;
if (rotation != 0) {
Rectangle pageSize = reader.GetPageSize(page);
switch (rotation) {
case 270:
r = new Rectangle(
pageSize.Top - r.Bottom,
r.Left,
pageSize.Top - r.Top,
r.Right);
break;
case 180:
r = new Rectangle(
pageSize.Right - r.Left,
pageSize.Top - r.Bottom,
pageSize.Right - r.Right,
pageSize.Top - r.Top);
break;
case 90:
r = new Rectangle(
r.Bottom,
pageSize.Right - r.Left,
r.Top,
pageSize.Right - r.Right);
break;
}
r.Normalize();
}
ret[ptr++] = r.Left;
ret[ptr++] = r.Bottom;
ret[ptr++] = r.Right;
ret[ptr++] = r.Top;
}
catch {
// empty on purpose
}
}
if (ptr < ret.Length) {
float[] ret2 = new float[ptr];
System.Array.Copy(ret, 0, ret2, 0, ptr);
return ret2;
}
return ret;
}