public static void GetFormFieldValue(PdfFormField field) { Console.WriteLine("Field: " + field.GetFullName()); var field_obj = field.GetObject(); var value_obj = field_obj.Get("V"); if (value_obj == null) { Console.WriteLine("Value is empty"); return; } switch (value_obj.GetObjectType()) { case PdfObjectType.kPdsString: { // single value od the form field PdsString value_str = (PdsString)value_obj; Console.WriteLine("Value: " + value_str.GetText()); } break; case PdfObjectType.kPdsArray: { // multiple values (e.g listbox with mutiple selection set) PdsArray value_arr = (PdsArray)value_obj; for (var i = 0; i < value_arr.GetNumObjects(); i++) { Console.WriteLine("Value" + (i + 1).ToString() + ": " + value_arr.GetText(i)); } } break; } }
/////////////////////////////////////////////////////////////////////// // ParseElement /////////////////////////////////////////////////////////////////////// private static void ParseObject(PdsObject obj, int level) { if (level == 3) { return; // Don't go too deep, it's just a sample. } Action <string> dump = str => { Console.WriteLine($"{str}"); }; String indent = new String('-', level); dump(indent); // parse element based on type; PdfObjectType objType = obj.GetObjectType(); switch (objType) { case PdfObjectType.kPdsNull: dump(indent + "null:" + ((PdsBoolean)obj).GetValue()); break; case PdfObjectType.kPdsBoolean: dump(indent + "boolean:" + ((PdsBoolean)obj).GetValue()); break; case PdfObjectType.kPdsNumber: dump(indent + "number:" + ((PdsNumber)obj).GetValue()); break; case PdfObjectType.kPdsString: dump(indent + "string:" + ((PdsString)obj).GetText()); break; case PdfObjectType.kPdsStream: dump(indent + "stream:" + ((PdsStream)obj).GetRawDataSize()); ParseObject(((PdsStream)obj).GetStreamDict(), level + 1); break; case PdfObjectType.kPdsArray: { dump("array:"); PdsArray arr = (PdsArray)obj; for (int i = 0; i < arr.GetNumObjects(); i++) { dump(indent + " [" + i + "]"); ParseObject(arr.Get(i), level + 1); } } break; case PdfObjectType.kPdsDictionary: { dump("dictionary:"); PdsDictionary dict = (PdsDictionary)obj; for (int i = 0; i < dict.GetNumKeys(); i++) { String key = dict.GetKey(i); dump(indent + " /" + key); ParseObject(dict.Get(key), level + 1); } } break; } }