It has NOTHING to do with the version of Acrobat - it has to do with the forms 
technology used.

There are two types of forms technologies in PDF - AcroForms and XFA.  You 
can't mix them...

Leonard

From: Gauravk Tyagi [mailto:gauravk.ty...@tcs.com]
Sent: Tuesday, November 10, 2009 8:17 AM
To: itext-questions@lists.sourceforge.net
Subject: [iText-questions] reg: the addition of blank signature over an adobe 
XFA form, please help


hello All,

can you people please guide me to how to add a signtaure on an adobe9 form 
using itext. i used the two codes that are working fine for a form filled in 
adobe 7 but for a form filled in adobe 9 not any signature is being added to 
the existing pdf.

This code was used to add the signature.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.cert.Certificate;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.PRAcroForm;
import com.lowagie.text.pdf.PdfAcroForm;
import com.lowagie.text.pdf.PdfAnnotation;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfFormField;
import com.lowagie.text.pdf.PdfName;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfSignatureAppearance;
import com.lowagie.text.pdf.PdfStamper;
import com.lowagie.text.pdf.PdfString;
import com.lowagie.text.pdf.PdfWriter;

public class DSOnPdf {

        /**
         * @param args
         */
        public static void main(String[] args)
        {
                try
                {
                //String strInputFileName ="C:\\sign\\1049-Form1BSigned9.pdf";
                String strInputFileName 
="C:\\sign\\Form23_Adobe9_1.1_2sign.pdf";
                String strOutPutFileName ="C:\\sign\\Form 20 BRRNEW.pdf";
                PdfReader reader = new PdfReader(strInputFileName);

                FileOutputStream fout = new 
FileOutputStream("C:\\sign\\Form23_Adobe9_1.1_2signnew.pdf");
                PdfStamper stp = new PdfStamper(reader, fout);
                PdfWriter pdfStamperImp = stp.getWriter();
                PdfAcroForm acroForm = pdfStamperImp.getAcroForm();
                PdfFormField signature = 
PdfFormField.createSignature(pdfStamperImp);
                acroForm.setSignatureParams(signature, "Signature1",  73, 173, 
123, 132);
                acroForm.drawSignatureAppearences(signature, 73, 173, 123, 132);
                stp.addSignature("Signature1", 1,73, 173, 123, 132);
                //acroForm.addFormField(signature);
                //stp.addAnnotation(signature, 4324);
                //PdfFormField sig = addSignature(stp, 1, "signature", 73, 73, 
23, 32);

                //stp.setFormFlattening(true);

                //sig.setFieldFlags(PdfAnnotation.FLAGS_PRINT);
     //   sig.setFlags(PdfAnnotation.FLAGS_PRINT);

                stp.close();
                }
                catch(Exception ex)
                {
                        ex.printStackTrace();
                }
        }


        static PdfFormField addSignature(PdfStamper pdfStamper, int page, 
String name, float llx, float lly, float urx, float ury)
    {
        PdfWriter pdfStamperImp = pdfStamper.getWriter();
        PdfAcroForm acroForm = pdfStamperImp.getAcroForm();

        PdfFormField signature = PdfFormField.createSignature(pdfStamperImp);

        acroForm.setSignatureParams(signature, name, llx, lly, urx, ury);
        acroForm.drawSignatureAppearences(signature, llx, lly, urx, ury);
        pdfStamper.addAnnotation(signature, page);
        signature.setFieldFlags(PdfAnnotation.FLAGS_PRINT);
        return signature;
    }


}

And this code was used to sign that signature field generated.


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.cert.Certificate;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.PRAcroForm;
import com.lowagie.text.pdf.PdfAcroForm;
import com.lowagie.text.pdf.PdfAnnotation;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfFormField;
import com.lowagie.text.pdf.PdfName;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfSignatureAppearance;
import com.lowagie.text.pdf.PdfStamper;
import com.lowagie.text.pdf.PdfString;
import com.lowagie.text.pdf.PdfWriter;

public class DigitalSignatureOnPdf2 {

        /**
         * @param args
         */
        public static void main(String[] args)
        {
                try
                {
                KeyStore ks = KeyStore.getInstance("pkcs12");
                ks.load(new 
FileInputStream("D:\\Util\\certs\\AXISBANKDEMO.p12"),"AXISBANK".toCharArray());
                String alias = (String)(ks.aliases().nextElement());
                PrivateKey key = 
(PrivateKey)ks.getKey(alias,"AXISBANK".toCharArray());
                Certificate[] chain = ks.getCertificateChain(alias);
                String strInputFileName ="C:\\sign\\Form 20 BNEW23123.pdf";
                //String strInputFileName ="C:\\sign\\DocumentRR.pdf";
                String strOutPutFileName ="C:\\sign\\Form 20 BNEW23123new.pdf";
                PdfReader reader = new PdfReader(strInputFileName);
                int n = reader.getNumberOfPages();

                //FileOutputStream fout = new 
FileOutputStream("C:\\sign\\1049-Form1BSigned9new.pdf");
                FileOutputStream fout = new FileOutputStream("C:\\sign\\Form 20 
BNEW23123new.pdf");
                //For single signature on pdf
                        //PdfStamper stp = PdfStamper.createSignature(reader, 
fout, '\6');
                //for multiple signature
                File f=new File("C:\\sign\\gaurav.pdf");
                PdfStamper  stp = PdfStamper.createSignature(reader, 
fout,'\0',null,true);
                PdfSignatureAppearance sap = stp.getSignatureAppearance();
                sap.setCrypto(key, chain, null, 
PdfSignatureAppearance.WINCER_SIGNED);
                //sap.setVisibleSignature(new Rectangle(500, 200, 550, 230), 1, 
null);
                //sap.setVisibleSignature(new Rectangle(200, 200, 250, 230), 1, 
null);
                //sap.setVisibleSignature("form1_DTLs[0].page1[0].Sign2[0]");
                sap.setVisibleSignature("Signature1");
                //stp.setFormFlattening(true);
                stp.close();
                }
                catch(Exception ex)
                {
                        ex.printStackTrace();
                }
        }

These both are working for adobe 7 forms but not for adobe 9 forms.and the 
forms are XFA based .
Gaurav Kumar Tyagi
Asst. System Engineer Trainee
Tata Consultancy Services
154, B Block A,
Sector 63, Phase III, Noida Distt
Gautam Buddha Nagar
Noida - 201301,Up
India
Cell:- 09990013398
Mailto: gauravk.ty...@tcs.com
Website: http://www.tcs.com<http://www.tcs.com/>
____________________________________________
Experience certainty.        IT Services
                       Business Solutions
                       Outsourcing
____________________________________________

=====-----=====-----=====

Notice: The information contained in this e-mail

message and/or attachments to it may contain

confidential or privileged information. If you are

not the intended recipient, any dissemination, use,

review, distribution, printing or copying of the

information contained in this e-mail message

and/or attachments to it are strictly prohibited. If

you have received this communication in error,

please notify us by reply e-mail or telephone and

immediately and permanently delete the message

and any attachments. Thank you




------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.1t3xt.com/docs/book.php
Check the site with examples before you ask questions: 
http://www.1t3xt.info/examples/
You can also search the keywords list: http://1t3xt.info/tutorials/keywords/

Reply via email to