iTextSharp.text.pdf.XfaForm.SetXfa C# (CSharp) Method

SetXfa() public static method

public static SetXfa ( XfaForm form, PdfReader reader, PdfWriter writer ) : void
form XfaForm
reader PdfReader
writer PdfWriter
return void
        public static void SetXfa(XfaForm form, PdfReader reader, PdfWriter writer) {
            PdfDictionary af = (PdfDictionary)PdfReader.GetPdfObjectRelease(reader.Catalog.Get(PdfName.ACROFORM));
            if (af == null) {
                return;
            }
            PdfObject xfa = GetXfaObject(reader);
            if (xfa.IsArray()) {
                PdfArray ar = (PdfArray)xfa;
                int t = -1;
                int d = -1;
                for (int k = 0; k < ar.Size; k += 2) {
                    PdfString s = ar.GetAsString(k);
                    if ("template".Equals(s.ToString())) {
                        t = k + 1;
                    }
                    if ("datasets".Equals(s.ToString())) {
                        d = k + 1;
                    }
                }
                if (t > -1 && d > -1) {
                    reader.KillXref(ar.GetAsIndirectObject(t));
                    reader.KillXref(ar.GetAsIndirectObject(d));
                    PdfStream tStream = new PdfStream(SerializeDoc(form.templateNode));
                    tStream.FlateCompress(writer.CompressionLevel);
                    ar[t] = writer.AddToBody(tStream).IndirectReference;
                    PdfStream dStream = new PdfStream(SerializeDoc(form.datasetsNode));
                    dStream.FlateCompress(writer.CompressionLevel);
                    ar[d] = writer.AddToBody(dStream).IndirectReference;
                    af.Put(PdfName.XFA, new PdfArray(ar));
                    return;
                }
            }
            reader.KillXref(af.Get(PdfName.XFA));
            PdfStream str = new PdfStream(SerializeDoc(form.domDocument));
            str.FlateCompress(writer.CompressionLevel);
            PdfIndirectReference refe = writer.AddToBody(str).IndirectReference;
            af.Put(PdfName.XFA, refe);
        }

Same methods

XfaForm::SetXfa ( PdfWriter writer ) : void