public bool RenameField(String oldName, String newName) {
int idx1 = oldName.LastIndexOf('.') + 1;
int idx2 = newName.LastIndexOf('.') + 1;
if (idx1 != idx2)
return false;
if (!oldName.Substring(0, idx1).Equals(newName.Substring(0, idx2)))
return false;
if (fields.ContainsKey(newName))
return false;
Item item = (Item)fields[oldName];
if (item == null)
return false;
newName = newName.Substring(idx2);
PdfString ss = new PdfString(newName, PdfObject.TEXT_UNICODE);
item.WriteToAll( PdfName.T, ss, Item.WRITE_VALUE | Item.WRITE_MERGED);
item.MarkUsed( this, Item.WRITE_VALUE );
fields.Remove(oldName);
fields[newName] = item;
return true;
}