Exemple #1
0
        /**
         * Sets the XFA key from a byte array. The old XFA is erased.
         * @param form the data
         * @param reader the reader
         * @param writer the writer
         * @throws java.io.IOException on error
         */
        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);
        }
Exemple #2
0
 /**
 * Sets the XFA key from a byte array. The old XFA is erased.
 * @param form the data
 * @param reader the reader
 * @param writer the writer
 * @throws java.io.IOException on error
 */
 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);
 }
Exemple #3
0
 internal AcroFields(PdfReader reader, PdfWriter writer)
 {
     this.reader = reader;
     this.writer = writer;
     xfa = new XfaForm(reader);
     if (writer is PdfStamperImp) {
         append = ((PdfStamperImp)writer).append;
     }
     Fill();
 }