// --------------------------------------------------------------------------- /** * Renames the fields in an interactive form. * @param datasheet the path to the original form * @param i a number that needs to be appended to the field names * @return a byte[] containing an altered PDF file */ private static byte[] RenameFieldsIn(string datasheet, int i) { List <string> form_keys = new List <string>(); using (var ms = new MemoryStream()) { PdfReader reader = new PdfReader(datasheet); // Create the stamper using (PdfStamper stamper = new PdfStamper(reader, ms)) { // Get the fields AcroFields form = stamper.AcroFields; // so we aren't hit with 'Collection was modified' exception foreach (string k in stamper.AcroFields.Fields.Keys) { form_keys.Add(k); } // Loop over the fields foreach (string key in form_keys) { // rename the fields form.RenameField(key, string.Format("{0}_{1}", key, i)); } } reader.Close(); return(ms.ToArray()); } }
private int AppendAdditionalStatements(HealthStatements myStatements, int index, int StatementCount, int page) { PdfReader myPDFReader = new PdfReader(pdfTemplate + "AddMedAns.pdf"); ByteBuffer myPDFAddTemp = new ByteBuffer(); ByteBuffer myPDFAdd = new ByteBuffer(); PdfStamper mypdfStamper = new PdfStamper(myPDFReader, myPDFAddTemp); AcroFields mypdfFormFields = mypdfStamper.AcroFields; List <string> myKeys = new List <string>(); //Store Keys foreach (DictionaryEntry pf in mypdfFormFields.Fields) { myKeys.Add(pf.Key.ToString()); } //Rename Fields foreach (string k in myKeys) { if (!k.Contains("SignaturePort") && !k.Contains("appdate")) { mypdfFormFields.RenameField(k, k.Replace("[", "").Replace("]", "") + "_" + page.ToString()); } } //close stamper and reader to apply changes myPDFReader.Close(); mypdfStamper.Close(); //Create new reader and stamper using pdf with new fields (myPDFAddTemp) myPDFReader = new PdfReader(myPDFAddTemp.Buffer); mypdfStamper = new PdfStamper(myPDFReader, myPDFAdd); mypdfFormFields = mypdfStamper.AcroFields; int i = 1; while (i <= 9 && index < StatementCount) { HealthStatement statement = myStatements.MyHealthStatements[index]; mypdfFormFields.SetField("Row" + i + "0" + "_" + page.ToString(), statement.QuestionNum); mypdfFormFields.SetField("Row" + i + "1" + "_" + page.ToString(), statement.Name); mypdfFormFields.SetField("Row" + i + "2" + "_" + page.ToString(), statement.Condition); mypdfFormFields.SetField("Row" + i + "3" + "_" + page.ToString(), statement.DateDiagnosed); mypdfFormFields.SetField("Row" + i + "4" + "_" + page.ToString(), statement.DateLastTreated); mypdfFormFields.SetField("Row" + i + "5" + "_" + page.ToString(), statement.TreatmentType); mypdfFormFields.SetField("Row" + i + "6" + "_" + page.ToString(), statement.IsMedication ? "Yes" : "No"); mypdfFormFields.SetField("Row" + i + "7" + "_" + page.ToString(), statement.Recovery); i++; index++; } myPDFReader.Close(); mypdfStamper.Close(); additionalHealthAnswers.Add(myPDFAdd); return(index); }
public static void multiplePage() { List <Byte[]> result = new List <byte[]>(); for (int i = 1; i <= 2; i++) { using (MemoryStream ms = new MemoryStream()) { PdfReader pdfReader = new PdfReader(templateFile); PdfStamper pdfStamper = new PdfStamper(pdfReader, ms); AcroFields pdfFormFields = pdfStamper.AcroFields; List <String> keys = new List <String>(pdfFormFields.Fields.Keys); foreach (var key in keys) { // rename the fields pdfFormFields.RenameField(key, String.Format("{0}_{1}", key, i)); } pdfFormFields.AddSubstitutionFont(BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED)); pdfFormFields.SetField("Radio Button1_" + i, "1"); pdfFormFields.SetField("Check Box101_" + i, "是"); pdfFormFields.SetField("Currency_" + i, "是"); //String[] values = pdfFormFields.GetAppearanceStates("Check Box101"); //foreach (String value in values) { // Console.WriteLine("values=" + value); //} pdfFormFields.SetField("Text21_" + i, "(" + i + ")聖島國際專利商標聯合事務所"); pdfFormFields.SetField("Text74_" + i, "台北市松山區南京東路三段248號11樓之1"); pdfStamper.Writer.CloseStream = false; //pdfStamper.FormFlattening = true;//平面化 pdfStamper.Close(); pdfReader.Close(); result.Add(ms.ToArray()); } } MemoryStream outStream = new MemoryStream(); outStream = MergePdfForms(result); System.IO.File.WriteAllBytes(outputFile, outStream.ToArray()); }
// --------------------------------------------------------------------------- public byte[] ManipulatePdf(byte[] src, Dictionary <string, TextField> cache, string name, string login) { using (MemoryStream ms = new MemoryStream()) { PdfReader reader = new PdfReader(src); using (PdfStamper stamper = new PdfStamper(reader, ms)) { AcroFields form = stamper.AcroFields; form.FieldCache = cache; form.SetExtraMargin(2, 0); form.RemoveField("personal.password"); form.SetField("personal.name", name); form.SetField("personal.loginname", login); form.RenameField("personal.reason", "personal.motivation"); form.SetFieldProperty( "personal.loginname", "setfflags", TextField.READ_ONLY, null ); stamper.FormFlattening = true; stamper.PartialFormFlattening("personal.name"); } return(ms.ToArray()); } }