public byte[] importXml(byte[] inputPdf, Stream xmlData, Boolean isSign) { Console.WriteLine("Read PDF"); PdfReader reader = new PdfReader(inputPdf); MemoryStream output = new MemoryStream(); PdfStamper stamper = new PdfStamper(reader, output, '\0', false); AcroFields form = stamper.AcroFields; XfaForm xfa = form.Xfa; Console.WriteLine("Fill Data"); xfa.FillXfaForm(xmlData); Console.WriteLine("Set fields to read only"); if (!isSign) { foreach (string key in form.Fields.Keys) { form.SetFieldProperty(key, "setfflags", PdfFormField.FF_READ_ONLY, null); } } stamper.Close(); reader.Close(); return(output.ToArray()); }
// --------------------------------------------------------------------------- public byte[] ManipulatePdf(String src, String xml) { PdfReader reader = new PdfReader(src); using (MemoryStream ms = new MemoryStream()) { using (PdfStamper stamper = new PdfStamper(reader, ms)) { AcroFields form = stamper.AcroFields; XfaForm xfa = form.Xfa; xfa.FillXfaForm(XmlReader.Create(new StringReader(xml))); } return(ms.ToArray()); } }
protected void ManipulatePdf(string dest) { PdfDocument pdfdoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest)); PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfdoc, true); XfaForm xfa = form.GetXfaForm(); // Method fills this object with XFA data under datasets/data. xfa.FillXfaForm(new FileStream(XML, FileMode.Open, FileAccess.Read)); xfa.Write(pdfdoc); pdfdoc.Close(); }