/** Sets all the fields from this <CODE>AcroFields</CODE> * @param acro the <CODE>AcroFields</CODE> */ virtual public void SetFields(AcroFields af) { foreach (KeyValuePair <string, AcroFields.Item> entry in af.Fields) { String fn = entry.Key; AcroFields.Item item = entry.Value; PdfDictionary dic = item.GetMerged(0); PdfObject v = PdfReader.GetPdfObjectRelease(dic.Get(PdfName.V)); if (v == null) { continue; } PdfObject ft = PdfReader.GetPdfObjectRelease(dic.Get(PdfName.FT)); if (ft == null || PdfName.SIG.Equals(ft)) { continue; } SetField(fn, v); } }
/** Sets all the fields from this <CODE>AcroFields</CODE> * @param acro the <CODE>AcroFields</CODE> */ public void SetFields(AcroFields af) { foreach (DictionaryEntry entry in af.Fields) { String fn = (String)entry.Key; AcroFields.Item item = (AcroFields.Item)entry.Value; PdfDictionary dic = (PdfDictionary)item.merged[0]; PdfObject v = PdfReader.GetPdfObjectRelease(dic.Get(PdfName.V)); if (v == null) { continue; } PdfObject ft = PdfReader.GetPdfObjectRelease(dic.Get(PdfName.FT)); if (ft == null || PdfName.SIG.Equals(ft)) { continue; } SetField(fn, v); } }
internal void CreateWidgets(List <Object> list, AcroFields.Item item) { for (int k = 0; k < item.Size; ++k) { list.Add(item.GetPage(k)); PdfDictionary merged = item.GetMerged(k); PdfObject dr = merged.Get(PdfName.DR); if (dr != null) { PdfFormField.MergeResources(resources, (PdfDictionary)PdfReader.GetPdfObject(dr)); } PdfDictionary widget = new PdfDictionary(); foreach (PdfName key in merged.Keys) { if (widgetKeys.ContainsKey(key)) { widget.Put(key, merged.Get(key)); } } widget.Put(iTextTag, new PdfNumber(item.GetTabOrder(k) + 1)); list.Add(widget); } }
internal void CreateWidgets(ArrayList list, AcroFields.Item item) { for (int k = 0; k < item.merged.Count; ++k) { list.Add(item.page[k]); PdfDictionary merged = (PdfDictionary)item.merged[k]; PdfObject dr = merged.Get(PdfName.DR); if (dr != null) { PdfFormField.MergeResources(resources, (PdfDictionary)PdfReader.GetPdfObject(dr)); } PdfDictionary widget = new PdfDictionary(); foreach (PdfName key in merged.Keys) { if (widgetKeys.ContainsKey(key)) { widget.Put(key, merged.Get(key)); } } widget.Put(iTextTag, new PdfNumber((int)item.tabOrder[k] + 1)); list.Add(widget); } }
internal void MergeField(String name, AcroFields.Item item) { Dictionary <string, object> map = fieldTree; StringTokenizer tk = new StringTokenizer(name, "."); if (!tk.HasMoreTokens()) { return; } while (true) { String s = tk.NextToken(); Object obj; map.TryGetValue(s, out obj); if (tk.HasMoreTokens()) { if (obj == null) { obj = new Dictionary <string, object>(); map[s] = obj; map = (Dictionary <string, object>)obj; continue; } else if (obj is Dictionary <string, object> ) { map = (Dictionary <string, object>)obj; } else { return; } } else { if (obj is Dictionary <string, object> ) { return; } PdfDictionary merged = item.GetMerged(0); if (obj == null) { PdfDictionary field = new PdfDictionary(); if (PdfName.SIG.Equals(merged.Get(PdfName.FT))) { hasSignature = true; } foreach (PdfName key in merged.Keys) { if (fieldKeys.ContainsKey(key)) { field.Put(key, merged.Get(key)); } } List <object> list = new List <object>(); list.Add(field); CreateWidgets(list, item); map[s] = list; } else { List <object> list = (List <object>)obj; PdfDictionary field = (PdfDictionary)list[0]; PdfName type1 = (PdfName)field.Get(PdfName.FT); PdfName type2 = (PdfName)merged.Get(PdfName.FT); if (type1 == null || !type1.Equals(type2)) { return; } int flag1 = 0; PdfObject f1 = field.Get(PdfName.FF); if (f1 != null && f1.IsNumber()) { flag1 = ((PdfNumber)f1).IntValue; } int flag2 = 0; PdfObject f2 = merged.Get(PdfName.FF); if (f2 != null && f2.IsNumber()) { flag2 = ((PdfNumber)f2).IntValue; } if (type1.Equals(PdfName.BTN)) { if (((flag1 ^ flag2) & PdfFormField.FF_PUSHBUTTON) != 0) { return; } if ((flag1 & PdfFormField.FF_PUSHBUTTON) == 0 && ((flag1 ^ flag2) & PdfFormField.FF_RADIO) != 0) { return; } } else if (type1.Equals(PdfName.CH)) { if (((flag1 ^ flag2) & PdfFormField.FF_COMBO) != 0) { return; } } CreateWidgets(list, item); } return; } } }
internal void MergeField(string name, AcroFields.Item item) { var map = FieldTree; var tk = new StringTokenizer(name, "."); if (!tk.HasMoreTokens()) { return; } while (true) { var s = tk.NextToken(); var obj = map[s]; if (tk.HasMoreTokens()) { if (obj == null) { obj = new Hashtable(); map[s] = obj; map = (Hashtable)obj; continue; } else if (obj is Hashtable) { map = (Hashtable)obj; } else { return; } } else { if (obj is Hashtable) { return; } var merged = item.GetMerged(0); if (obj == null) { var field = new PdfDictionary(); if (PdfName.Sig.Equals(merged.Get(PdfName.Ft))) { _hasSignature = true; } foreach (PdfName key in merged.Keys) { if (FieldKeys.ContainsKey(key)) { field.Put(key, merged.Get(key)); } } var list = new ArrayList { field }; CreateWidgets(list, item); map[s] = list; } else { var list = (ArrayList)obj; var field = (PdfDictionary)list[0]; var type1 = (PdfName)field.Get(PdfName.Ft); var type2 = (PdfName)merged.Get(PdfName.Ft); if (type1 == null || !type1.Equals(type2)) { return; } var flag1 = 0; var f1 = field.Get(PdfName.Ff); if (f1 != null && f1.IsNumber()) { flag1 = ((PdfNumber)f1).IntValue; } var flag2 = 0; var f2 = merged.Get(PdfName.Ff); if (f2 != null && f2.IsNumber()) { flag2 = ((PdfNumber)f2).IntValue; } if (type1.Equals(PdfName.Btn)) { if (((flag1 ^ flag2) & PdfFormField.FF_PUSHBUTTON) != 0) { return; } if ((flag1 & PdfFormField.FF_PUSHBUTTON) == 0 && ((flag1 ^ flag2) & PdfFormField.FF_RADIO) != 0) { return; } } else if (type1.Equals(PdfName.Ch)) { if (((flag1 ^ flag2) & PdfFormField.FF_COMBO) != 0) { return; } } CreateWidgets(list, item); } return; } } }
internal void MergeField(String name, AcroFields.Item item) { Hashtable map = fieldTree; StringTokenizer tk = new StringTokenizer(name, "."); if (!tk.HasMoreTokens()) { return; } while (true) { String s = tk.NextToken(); Object obj = map[s]; if (tk.HasMoreTokens()) { if (obj == null) { obj = new Hashtable(); map[s] = obj; map = (Hashtable)obj; continue; } else if (obj is Hashtable) { map = (Hashtable)obj; } else { return; } } else { if (obj is Hashtable) { return; } PdfDictionary merged = (PdfDictionary)item.merged[0]; if (obj == null) { PdfDictionary field = new PdfDictionary(); foreach (PdfName key in merged.Keys) { if (fieldKeys.ContainsKey(key)) { field.Put(key, merged.Get(key)); } } ArrayList list = new ArrayList(); list.Add(field); CreateWidgets(list, item); map[s] = list; } else { ArrayList list = (ArrayList)obj; PdfDictionary field = (PdfDictionary)list[0]; PdfName type1 = (PdfName)field.Get(PdfName.FT); PdfName type2 = (PdfName)merged.Get(PdfName.FT); if (type1 == null || !type1.Equals(type2)) { return; } int flag1 = 0; PdfObject f1 = field.Get(PdfName.FF); if (f1 != null && f1.IsNumber()) { flag1 = ((PdfNumber)f1).IntValue; } int flag2 = 0; PdfObject f2 = merged.Get(PdfName.FF); if (f2 != null && f2.IsNumber()) { flag2 = ((PdfNumber)f2).IntValue; } if (type1.Equals(PdfName.BTN)) { if (((flag1 ^ flag2) & PdfFormField.FF_PUSHBUTTON) != 0) { return; } if ((flag1 & PdfFormField.FF_PUSHBUTTON) == 0 && ((flag1 ^ flag2) & PdfFormField.FF_RADIO) != 0) { return; } } else if (type1.Equals(PdfName.CH)) { if (((flag1 ^ flag2) & PdfFormField.FF_COMBO) != 0) { return; } } CreateWidgets(list, item); } return; } } }