code: public int getFieldType(String fieldName) {
          Item fd = getFieldItem(fieldName);
          if (fd == null)
              return FIELD_TYPE_NONE;
          PdfDictionary merged = fd.getMerged( 0 );
          PdfName type = merged.getAsName(PdfName.FT);
          if (type == null)
              return FIELD_TYPE_NONE;
          int ff = 0;
          PdfNumber ffo = merged.getAsNumber(PdfName.FF);
          if (ffo != null) {
              ff = ffo.intValue();
          }
          if (PdfName.BTN.equals(type)) {
              if ((ff & PdfFormField.FF_PUSHBUTTON) != 0)
                  return FIELD_TYPE_PUSHBUTTON;
              if ((ff & PdfFormField.FF_RADIO) != 0)
                  return FIELD_TYPE_RADIOBUTTON;
              else
                  return FIELD_TYPE_CHECKBOX;
          }
          else if (PdfName.TX.equals(type)) {
              return FIELD_TYPE_TEXT;
          }
          else if (PdfName.CH.equals(type)) {
              if ((ff & PdfFormField.FF_COMBO) != 0)
                  return FIELD_TYPE_COMBO;
              else
                  return FIELD_TYPE_LIST;
          }
          else if (PdfName.SIG.equals(type)) {
              return FIELD_TYPE_SIGNATURE;
          }
          return FIELD_TYPE_NONE;
      }
docs: Gets the field type. The type can be one of: <CODE>FIELD_TYPE_PUSHBUTTON</CODE>,
  <CODE>FIELD_TYPE_CHECKBOX</CODE>, <CODE>FIELD_TYPE_RADIOBUTTON</CODE>,
  <CODE>FIELD_TYPE_TEXT</CODE>, <CODE>FIELD_TYPE_LIST</CODE>,
  <CODE>FIELD_TYPE_COMBO</CODE> or <CODE>FIELD_TYPE_SIGNATURE</CODE>.
  <p>
  If the field does not exist or is invalid it returns
  <CODE>FIELD_TYPE_NONE</CODE>.
  
  @param fieldName the field name
  @return the field type