Quick Start (SOAP mode): Modifying a signature field using the Java API

The following Java code example modifies a signature field named SignatureField1 by locking all fields in the form when a signature is applied to the signature field and ensuring that no changes are allowed. After the Signature service returns the PDF document that contains the modified signature field, the PDF document is saved as a PDF file named LoanSig.pdf. (This example overwrites the PDF file that is passed to the Signature service.) (See Modifying Signature Fields.)

/* 
    * This Java Quick Start uses the SOAP mode and contains the following JAR files 
    * in the class path: 
    * 1. adobe-signatures-client.jar 
    * 2. adobe-livecycle-client.jar 
    * 3. adobe-usermanager-client.jar 
    * 4. adobe-utilities.jar 
    * 5. jbossall-client.jar (use a different JAR file if the LiveCycle server is not deployed 
    * on JBoss) 
    * 6. activation.jar (required for SOAP mode) 
    * 7. axis.jar (required for SOAP mode) 
    * 8. commons-codec-1.3.jar (required for SOAP mode) 
    * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
    * 10. commons-discovery.jar (required for SOAP mode) 
    * 11. commons-logging.jar (required for SOAP mode) 
    * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 14. jaxrpc.jar (required for SOAP mode) 
    * 15. log4j.jar (required for SOAP mode) 
    * 16. mail.jar (required for SOAP mode) 
    * 17. saaj.jar (required for SOAP mode) 
    * 18. wsdl4j.jar (required for SOAP mode) 
    * 19. xalan.jar (required for SOAP mode) 
    * 20. xbean.jar (required for SOAP mode) 
    * 21. xercesImpl.jar (required for SOAP mode) 
    *  
    *  These JAR files are located in the following path: 
    * <install directory>/sdk/client-libs/common 
    *  
    * The adobe-utilities.jar file is located in the following path: 
    * <install directory>/sdk/client-libs/jboss 
    *  
    * The jbossall-client.jar file is located in the following path: 
    * <install directory>/jboss/client 
    *  
    * SOAP required JAR files are located in the following path: 
    * <install directory>/sdk/client-libs/thirdparty 
    *  
    * If you want to invoke a remote LiveCycle server instance and there is a 
    * firewall between the client application and the server, then it is  
    * recommended that you use the SOAP mode. When using the SOAP mode,  
    * you have to include these additional JAR files 
    *  
    * For information about the SOAP  
    * mode, see "Setting connection properties" in Programming  
    * with LiveCycle 
    */ 
 
import java.util.*; 
import java.io.File; 
import java.io.FileInputStream; 
import com.adobe.livecycle.signatures.client.*; 
import com.adobe.livecycle.signatures.client.types.*; 
import com.adobe.idp.Document; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
 
public class ModifySignatureFieldSOAP { 
     
    public static void main(String[] args) { 
         
    try 
    { 
        //Set connection properties required to invoke LiveCycle using SOAP mode                                 
        Properties connectionProps = new Properties(); 
        connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://localhost:8080"); 
        connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
        connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
        connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
        connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
         
        //Create a ServiceClientFactory instance 
        ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
 
        //Create a SignatureServiceClient object 
        SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
         
        //Specify a PDF document that contains a signature field to modify 
        FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\LoanSig.pdf");     
        Document inDoc = new Document (fileInputStream); 
         
        //Specify the name of the signature field 
        String fieldName = "SignatureField1"; 
         
        //Create a PDFSignatureFieldProperties 
        PDFSignatureFieldProperties fieldProperties = new PDFSignatureFieldProperties(); 
         
         //Create a PDFSeedValueOptionSpec object that stores  
         //seed value dictionary information. 
         PDFSeedValueOptionSpec seedOptionsSpec = new PDFSeedValueOptionSpec(); 
         
         //Disallow changes to the PDF document. Any change to the document invalidates  
         //the signature 
         seedOptionsSpec.setMdpValue(MDPPermissions.NoChanges); 
         
         //Create a FieldMDPOptionSpec object that stores  
         //signature field lock dictionary information. 
         FieldMDPOptionSpec fieldMDPOptionsSpec = new FieldMDPOptionSpec();     
         
         //Lock all fields in the PDF document 
         fieldMDPOptionsSpec.setAction(FieldMDPAction.ALL); 
         
         //Set dictionary information 
         fieldProperties.setSeedValue(seedOptionsSpec); 
         fieldProperties.setFieldMDP(fieldMDPOptionsSpec); 
                 
         //Modify the signature field 
         Document modSignatureField =  signClient.modifySignatureField(inDoc,fieldName,fieldProperties); 
                  
         //Save the PDF document that contains modified signature field 
         File file = new File("C:\\Adobe\LoanSig.pdf"); 
         modSignatureField.copyToFile(file); 
                  
    } 
    catch (Exception ee) 
      { 
        ee.printStackTrace(); 
      } 
    } 
}