// --------------------------------------------------------------------------- /** * Manipulates a PDF file src with the file dest as result * @param src the original PDF */ public byte[] ManipulatePdf(byte[] src) { PdfReader reader = new PdfReader(src); using (MemoryStream ms = new MemoryStream()) { using (PdfStamper stamper = new PdfStamper(reader, ms)) { AcroFields form = stamper.AcroFields; form.SetField("choice_1", "NL"); form.SetListSelection("choice_2", new String[] { "German", "Spanish" }); String[] languages = form.GetListOptionDisplay("choice_3"); String[] exportvalues = form.GetListOptionExport("choice_3"); int n = languages.Length; String[] new_languages = new String[n + 2]; String[] new_exportvalues = new String[n + 2]; for (int i = 0; i < n; i++) { new_languages[i] = languages[i]; new_exportvalues[i] = exportvalues[i]; } new_languages[n] = "Chinese"; new_exportvalues[n] = "CN"; new_languages[n + 1] = "Japanese"; new_exportvalues[n + 1] = "JP"; form.SetListOption("choice_3", new_exportvalues, new_languages); form.SetField("choice_3", "CN"); form.SetField("choice_4", "Japanese"); } return(ms.ToArray()); } }
public static byte[] SetFields(byte[] pdfFile, IFormContentProvider contentProvider) { var pr = new PdfReader(pdfFile); var ims = new MemoryStream(); var ps = new PdfStamper(pr, ims); AcroFields flds = ps.AcroFields; foreach (DictionaryEntry entry in flds.Fields) { string fieldName = entry.Key.ToString(); var type = (FieldTypes)flds.GetFieldType(fieldName); switch (type) { case FieldTypes.Text: string value = null; string display = null; contentProvider.PopulateTextField(fieldName, out value, out display); if (value != null) { flds.SetField(fieldName, value); } break; case FieldTypes.List: string[] exportValues = null; string[] displayValues = null; string[] selected = null; contentProvider.PopulateListField(fieldName, out exportValues, out displayValues, out selected); if (exportValues != null) { flds.SetListOption(fieldName, exportValues, displayValues); } if (selected != null) { flds.SetListSelection(fieldName, selected); } break; default: break; } } ps.Close(); return(ims.ToArray()); }