public PushbuttonField GetNewPushbuttonFromField(String field, int order) {
if (GetFieldType(field) != FIELD_TYPE_PUSHBUTTON)
return null;
Item item = GetFieldItem(field);
if (order >= item.Size)
return null;
int posi = order * 5;
float[] pos = GetFieldPositions(field);
Rectangle box = new Rectangle(pos[posi + 1], pos[posi + 2], pos[posi + 3], pos[posi + 4]);
PushbuttonField newButton = new PushbuttonField(writer, box, null);
PdfDictionary dic = item.GetMerged(order);
DecodeGenericDictionary(dic, newButton);
PdfDictionary mk = dic.GetAsDict(PdfName.MK);
if (mk != null) {
PdfString text = mk.GetAsString(PdfName.CA);
if (text != null)
newButton.Text = text.ToUnicodeString();
PdfNumber tp = mk.GetAsNumber(PdfName.TP);
if (tp != null)
newButton.Layout = tp.IntValue + 1;
PdfDictionary ifit = mk.GetAsDict(PdfName.IF);
if (ifit != null) {
PdfName sw = ifit.GetAsName(PdfName.SW);
if (sw != null) {
int scale = PushbuttonField.SCALE_ICON_ALWAYS;
if (sw.Equals(PdfName.B))
scale = PushbuttonField.SCALE_ICON_IS_TOO_BIG;
else if (sw.Equals(PdfName.S))
scale = PushbuttonField.SCALE_ICON_IS_TOO_SMALL;
else if (sw.Equals(PdfName.N))
scale = PushbuttonField.SCALE_ICON_NEVER;
newButton.ScaleIcon = scale;
}
sw = ifit.GetAsName(PdfName.S);
if (sw != null) {
if (sw.Equals(PdfName.A))
newButton.ProportionalIcon = false;
}
PdfArray aj = ifit.GetAsArray(PdfName.A);
if (aj != null && aj.Size == 2) {
float left = aj.GetAsNumber(0).FloatValue;
float bottom = aj.GetAsNumber(1).FloatValue;
newButton.IconHorizontalAdjustment = left;
newButton.IconVerticalAdjustment = bottom;
}
PdfBoolean fb = ifit.GetAsBoolean(PdfName.FB);
if (fb != null && fb.BooleanValue)
newButton.IconFitToBounds = true;
}
PdfObject i = mk.Get(PdfName.I);
if (i != null && i.IsIndirect())
newButton.IconReference = (PRIndirectReference)i;
}
return newButton;
}