You're viewing help content for version:

  • Note: Quick starts located in Programming with v are based on the forms server being you are using another operating system, such as Unix, replace windows specific paths with paths supported by the applicable operating system. Likewise, if you are using another J2EE application server, then ensure that you specify valid connection properties. (See Setting connection properties.)

    Tip: The Adobe Developer web site contains the following article that discusses how to create a ASP.NET application that invokes the Forms service and renders forms. See Creating form rendering ASP.NET applications.

Quick Start (SOAP mode): Rendering an interactive PDF form using the Java API

The following code example renders an interactive PDF form named Loan.xdp to a client web browser. A file is attached to the form. Notice that the form design is part of an application and is referenced by using the content root URI value repository:///. (See Rendering Interactive PDF Forms.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
     *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms. 
     */ 
 import java.io.FileInputStream; 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
  
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.InputStream; 
  
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class RenderPDFForm extends HttpServlet implements Servlet { 
  
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp); 
     } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
         try{ 
             //Set connection properties required to invoke AEM Forms                                 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
             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 object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
             //Create a FormsServiceClient object 
             FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
             //Set the parameter values for the renderPDFForm method 
             String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";   
                      
             byte[]    cData = "".getBytes(); 
             Document oInputData = new Document(cData); 
                                      
             //Set run-time options using a PDFFormRenderSpec instance 
             PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec(); 
             pdfFormRenderSpec.setCacheEnabled(new Boolean(true)); 
             pdfFormRenderSpec.setAcrobatVersion(AcrobatVersion.Acrobat_9); 
                      
             //Specify URI values that are required to render a form 
             URLSpec uriValues = new URLSpec();  
             uriValues.setApplicationWebRoot("http://[server]:[port]/FormsQS"); 
             uriValues.setContentRootURI("repository:///"); 
             uriValues.setTargetURL("http://[server]:[port]/FormsQS/HandleData"); 
                      
             //Specify file attachments to attach to the form 
             FileInputStream fileAttachment = new FileInputStream("C:\\rideau1.jpg");  
             Document attachment1 = new Document(fileAttachment); 
             String fileName = "rideau1.jpg"; 
             Map fileAttachments = new HashMap(); 
             fileAttachments.put(fileName, attachment1);  
                          
             //Invoke the renderPDFForm method and write the  
             //results to a client web browser 
             FormsResult formOut = formsClient.renderPDFForm( 
                         formName,               //formQuery 
                         oInputData,             //inDataDoc 
                         pdfFormRenderSpec,      //PDFFormRenderSpec 
                         uriValues,                //urlSpec 
                         fileAttachments            //attachments 
                         ); 
          
             //Create a Document object that stores form data 
             Document myData = formOut.getOutputContent(); 
          
             //Get the content type of the response and 
             //set the HttpServletResponse objects content type 
             String contentType = myData.getContentType();  
             resp.setContentType(contentType); 
          
             //Create a ServletOutputStream object 
             ServletOutputStream oOutput = resp.getOutputStream(); 
          
             //Create an InputStream object 
             InputStream inputStream = myData.getInputStream(); 
          
             //Write the data stream to the web browser 
             byte[] data = new byte[4096]; 
             int bytesRead = 0; 
             while ((bytesRead = inputStream.read(data)) > 0) 
             { 
                 oOutput.write(data, 0, bytesRead); 
             } 
          
             }catch (Exception e) { 
                  e.printStackTrace(); 
               } 
         } 
 }

Quick Start (SOAP mode): Rendering a form at the client using the Java API

The following code example renders a form named Loan.xdp at the client using the Forms service Java API. Notice that the form design is part of an application and is referenced by using the content root URI value repository:///. (See Rendering Forms at the Client.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms. 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.InputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class RenderPDFFormClient extends HttpServlet implements Servlet { 
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
             doPost(req,resp); 
     } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
     try{ 
         //Set connection properties required to invoke AEM Forms                                 
         Properties connectionProps = new Properties(); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
         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 object 
         ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
         //Create a FormsServiceClient object 
         FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
         //Set parameter values required by the renderPDFForm method 
         String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";  
         byte[]    cData = "".getBytes(); 
         Document oInputData = new Document(cData); 
                  
         //Set a run-time option required to render a form on the client 
         PDFFormRenderSpec pdfRenderSpec = new PDFFormRenderSpec();  
         pdfRenderSpec.setRenderAtClient(RenderAtClient.Yes); 
                  
         //Specify URI values required to render a form 
         URLSpec uriValues = new URLSpec();  
         uriValues.setApplicationWebRoot("http://[server]:[port]/FormsServiceClientApp"); 
         uriValues.setContentRootURI("repository:///"); 
         uriValues.setTargetURL("http://[server]:[port]/FormsServiceClientApp/HandleData"); 
          
         //Invoke the renderPDFForm method to render  
         //an interactive PDF form on the client 
         FormsResult formOut = formsClient.renderPDFForm( 
                 formName,            
                 oInputData,          
                 pdfRenderSpec,       
                 uriValues,             
                 null                 
             ); 
          
         //Create a Document object that stores form data 
         Document myData = formOut.getOutputContent(); 
          
         //Get the content type of the response and 
         //set the HttpServletResponse objects content type 
         String contentType = myData.getContentType();  
         resp.setContentType(contentType); 
          
         //Create a ServletOutputStream object 
         ServletOutputStream oOutput = resp.getOutputStream(); 
          
         //Create an InputStream object 
         InputStream inputStream = myData.getInputStream(); 
          
         //Write the data stream to the web browser 
         byte[] data = new byte[4096]; 
         int bytesRead = 0; 
         while ((bytesRead = inputStream.read(data)) > 0) 
         { 
             oOutput.write(data, 0, bytesRead); 
         } 
          
         }catch (Exception e) { 
              System.out.println("The following exception occurred: "+e.getMessage()); 
          } 
     } 
 } 
 

Quick Start (SOAP mode): Rendering a Guide (deprecated) using the Java API

The following code example renders a Guide (deprecated) named TLALifeClaim.xdp to a client web browser.

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import java.io.InputStream; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
  
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class RenderFormGuide extends HttpServlet implements Servlet { 
  
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp);  
     } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
     try{ 
              
         //Set connection properties required to invoke AEM Forms                                 
         Properties connectionProps = new Properties(); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
         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 object 
         ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
         FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
         //Specify the parameters for the renderActivityGuide method 
         String formName = "Applications/FormsApplication/1.0/FormsFolder/TLALifeClaim.xdp";  
         byte[] cData = "".getBytes(); 
         Document oInputData = new Document(cData); 
                  
         //Cache the PDF form 
         PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec(); 
         pdfFormRenderSpec.setCacheEnabled(new Boolean(true)); 
  
         //Set Form Guide run-time options 
         ActivityGuideRenderSpec renderSpec = new ActivityGuideRenderSpec();  
         renderSpec.setGuidePDF(false); 
          
         //Specify URI values that are required to render a form 
         //design located in the AEM Forms repository 
         URLSpec uriValues = new URLSpec();  
         uriValues.setApplicationWebRoot("http://[server]:[port]/FormsQS"); 
         uriValues.setContentRootURI("repository:///"); 
         uriValues.setTargetURL("http://[server]:[port]/FormsQS/HandleData"); 
          
  
         //Invoke the renderFormGuide method 
         FormsResult formOut = formsClient.renderFormGuide( 
                 formName,            //formQuery 
                 oInputData,          //inDataDoc  
                 pdfFormRenderSpec,    //pdfFormRenderSpec 
                 renderSpec,           //activityGuideRenderSpec 
                 uriValues              //urlSpec 
                 );   
          
         //Create a Document object that stores form data 
         Document myData = formOut.getOutputContent(); 
          
         //Get the content type of the response 
         String contentType = myData.getContentType();  
         resp.setContentType(contentType); 
          
         //Create a ServletOutputStream object 
         ServletOutputStream oOutput = resp.getOutputStream(); 
          
         //Create an InputStream object 
         InputStream inputStream = myData.getInputStream(); 
          
         //Write the data stream to the web browser 
         byte[] data = new byte[4096]; 
         int bytesRead = 0; 
         while ((bytesRead = inputStream.read(data)) > 0) 
         { 
             oOutput.write(data, 0, bytesRead); 
         } 
  
     }catch (Exception e) { 
              System.out.println("The following exception occured: "+e.getMessage()); 
               } 
      } 
 } 
 

Quick Start (SOAP mode): Rendering a form based on fragments using the Java API

The following code example renders a form that is based on fragments. The name of the form design is PurchaseOrderDynamic.xdp and it is located in the AEM Forms repository (the XDP file is stored in a folder named FormsFolder located in the repository). Also the fragments that the POFragment form references must also be located in the repository. (See Rendering Forms Based on Fragments.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
     *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.FileInputStream; 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.InputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class RenderFormFragments extends HttpServlet implements Servlet { 
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp);  
  
     } 
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
     throws ServletException, IOException { 
              
         try{ 
             //Set connection properties required to invoke AEM Forms                                 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
             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 object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
             //Create a FormsServiceClient object 
             FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
             //Set the parameter values for the renderPDFForm method 
             String formName = "Applications/FormsApplication/1.0/FormsFolder/PurchaseOrderDynamic.xdp";   
              
             FileInputStream myFormData = new FileInputStream("C:\\Adobe\Purchase Order US.xml"); 
             Document oInputData = new Document(myFormData); 
                                      
             //Cache the PDF form 
             PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec(); 
             pdfFormRenderSpec.setCacheEnabled(new Boolean(true)); 
          
             //Specify URI values that are required to render a form 
             //design based on fragments 
             URLSpec uriValues = new URLSpec();  
             uriValues.setApplicationWebRoot("http://[server]:[port]/FormsServiceClientApp"); 
             uriValues.setContentRootURI("repository:///"); 
             uriValues.setTargetURL("http://[server]:[port]/FormsServiceClientApp/HandleData"); 
                      
             //Invoke the renderPDFForm method and write the  
             //results to a client web browser 
             FormsResult formOut = formsClient.renderPDFForm( 
                         formName,               //formQuery 
                         oInputData,             //inDataDoc 
                         pdfFormRenderSpec,      //PDFFormRenderSpec 
                         uriValues,                //urlSpec 
                         null                    //attachments 
                         ); 
          
             //Create a Document object that stores form data 
             Document myData = formOut.getOutputContent(); 
          
             //Get the content type of the response and 
             //set the HttpServletResponse object’s content type 
             String contentType = myData.getContentType();  
             resp.setContentType(contentType); 
          
             //Create a ServletOutputStream object 
             ServletOutputStream oOutput = resp.getOutputStream(); 
          
             //Create an InputStream object 
             InputStream inputStream = myData.getInputStream(); 
          
             //Write the data stream to the web browser 
             byte[] data = new byte[4096]; 
             int bytesRead = 0; 
             while ((bytesRead = inputStream.read(data)) > 0) 
             { 
                 oOutput.write(data, 0, bytesRead); 
             } 
         }catch (Exception e) { 
              System.out.println("The following exception occurred: "+e.getMessage()); 
       } 
     } 
 }

Quick Start (SOAP mode): Rendering a rights-enabled form using the Java API

The following code example renders a rights-enabled form to a client web browser. The usage rights set in this code example enable a user to add comments in the form and save form data. (See Rendering Rights-Enabled Forms.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.InputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
  
 public class RenderUsageRightsForms extends HttpServlet implements Servlet { 
  
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp); 
     } 
  
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
     try{ 
         //Set connection properties required to invoke AEM Forms                                 
         Properties connectionProps = new Properties(); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
         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 FormsServiceClient object 
         ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
         FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
         //Set parameter values for the renderPDFFormWithUsageRights method 
         String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";  
         byte[]    cData = "".getBytes(); 
         Document oInputData = new Document(cData); 
          
         //Set run-time options 
         PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec(); 
         pdfFormRenderSpec.setCacheEnabled(new Boolean(true)); 
          
         //Set usage-rights run-time options 
         ReaderExtensionSpec reOptions = new ReaderExtensionSpec(); 
         reOptions.setReCredentialAlias("RE2"); 
         reOptions.setReCommenting(true); 
         reOptions.setReFillIn(true); 
          
         //Specify URI values required to render the form 
         URLSpec uriValues = new URLSpec();  
         uriValues.setApplicationWebRoot("http://[server]:[port]/FormsQS"); 
         uriValues.setContentRootURI("repository:///"); 
         uriValues.setTargetURL("http://[server]:[port]/FormsQS/HandleData"); 
          
         //Render a rights-enabled PDF form 
         FormsResult formOut = formsClient.renderPDFFormWithUsageRights( 
             formName,            //formQuery 
             oInputData,          //inDataDoc  
             pdfFormRenderSpec,   //renderFormOptionsSpec 
             reOptions,              //applicationWebRoot 
             uriValues            //targetURL 
             ); 
          
         //Create a Document object that stores form data 
         Document myData = formOut.getOutputContent(); 
          
         //Get the content type of the response and 
         //set the HttpServletResponse objects content type 
         String contentType = myData.getContentType();  
         resp.setContentType(contentType); 
          
         //Create a ServletOutputStream object 
         ServletOutputStream oOutput = resp.getOutputStream(); 
          
         //Create an InputStream object 
         InputStream inputStream = myData.getInputStream(); 
          
         //Write the data stream to the web browser 
         byte[] data = new byte[4096]; 
         int bytesRead = 0; 
         while ((bytesRead = inputStream.read(data)) > 0) 
         { 
             oOutput.write(data, 0, bytesRead); 
         } 
          
     }catch (Exception e) { 
          System.out.println("The following exception occurred: "+e.getMessage()); 
       } 
     } 
 } 
  
 

Quick Start (SOAP mode): Rendering an HTML form using the Java API

The following code example renders an HTML form using the Forms service Java API. A toolbar is added to the HTML form as well as two file attachments. In addition, the user agent value is obtained from the HttpServletRequest object. (See Rendering Forms as HTML.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
  
 import java.util.*; 
 import java.io.InputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import java.io.FileInputStream; 
  
  
 public class RenderHTMLForms extends HttpServlet implements Servlet { 
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp);  
     } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
             try{ 
              
                 //Set connection properties required to invoke AEM Forms     
                 Properties connectionProps = new Properties(); 
                 connectionProps.setProperty("DSC_DEFAULT_SOAP_ENDPOINT", "http://[server]:[port]"); 
                 connectionProps.setProperty("DSC_TRANSPORT_PROTOCOL","SOAP");           
                 connectionProps.setProperty("DSC_SERVER_TYPE", "JBoss"); 
                 connectionProps.setProperty("DSC_CREDENTIAL_USERNAME", "administrator"); 
                 connectionProps.setProperty("DSC_CREDENTIAL_PASSWORD", "password"); 
              
                 //Create a FormsServiceClient object 
                 ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                 FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
                 //Set parameter values for the (Deprecated) renderHTMLForm method 
                 String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";   
                 byte[]    cData = "".getBytes(); 
                 Document oInputData = new Document(cData); 
                  
                 //Obtain the user agent value from the HttpServletRequest object 
                 String userAgent = req.getHeader("user-agent"); 
                                      
                 //Create an HTMLRenderSpec object to store HTML run-time options 
                 HTMLRenderSpec htmlRS = new HTMLRenderSpec(); 
                 htmlRS.setHTMLToolbar(HTMLToolbar.Vertical); 
                                                          
                 //Specify the locale value 
                 htmlRS.setLocale("en_US"); 
                          
                 //Render the HTML form within full HTML tags 
                 htmlRS.setOutputType(OutputType.FullHTMLTags); 
                  
                 //Set style information that controls the presentation of the HTML form 
                 htmlRS.setStyleGenerationLevel(StyleGenerationLevel.InlineAndInternalStyles); 
                                                                  
                 //Specify URI values that are required to render a form 
                 URLSpec uriValues = new URLSpec();  
                 uriValues.setApplicationWebRoot("http://[server]:[port]/FormsQS"); 
                 uriValues.setContentRootURI("repository:///"); 
                 uriValues.setTargetURL("http://[server]:[port]/FormsQS/HandleSubmittedHTMLForm"); 
                                  
                 //Specify file attachments 
                 FileInputStream myForm = new FileInputStream("C:\\Attach1.txt");  
                 Document attachment1 = new Document(myForm); 
                 FileInputStream myForm2 = new FileInputStream("C:\\Attach2.txt");  
                 Document attachment2 = new Document(myForm2); 
                 String fileName = "Attach1.txt"; 
                 String fileName2 = "Attach2.txt"; 
                      
                 Map fileAttachments = new HashMap(); 
                 fileAttachments.put(fileName, attachment1);  
                 fileAttachments.put(fileName2, attachment2);  
                          
                 //Invoke the (Deprecated) renderHTMLForm method 
                 FormsResult formOut = formsClient.renderHTMLForm( 
                     formName,               //formQuery 
                     TransformTo.MSDHTML,    //transformTo 
                     oInputData,             //inDataDoc 
                     htmlRS,                    //renderHTMLSpec 
                     userAgent,                //User Agent 
                     uriValues,                //urlSpec 
                     fileAttachments            //attachments 
                     ); 
          
                 //Create a Document object that stores form data 
                 Document myData = formOut.getOutputContent(); 
          
                 //Get the content type of the response and 
                 //set the HttpServletResponse object’s content type 
                 String contentType = myData.getContentType();  
                 resp.setContentType(contentType); 
          
                 //Create a ServletOutputStream object 
                 ServletOutputStream oOutput = resp.getOutputStream(); 
          
                 //Create an InputStream object 
                 InputStream inputStream = myData.getInputStream(); 
          
                 //Write the data stream to the web browser 
                 byte[] data = new byte[4096]; 
                 int bytesRead = 0; 
                 while ((bytesRead = inputStream.read(data)) > 0) 
                 { 
                     oOutput.write(data, 0, bytesRead); 
                 } 
          
                 }catch (Exception e) { 
                      System.out.println("The following exception occurred: "+e.getMessage()); 
                      } 
             } 
 } 
  
  
  
 

Quick Start (SOAP mode): Rendering an HTML form that uses a CSS file using the Java API

The following code example renders an HTML form using the Forms service Client API. The name of the custom CSS file that is referenced is custom.css. (See Rendering HTML Forms Using Custom CSS Files.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
     *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
  
 import java.util.*; 
 import java.io.InputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 import java.io.FileInputStream; 
  
  
 public class RenderHTMLCSS extends HttpServlet implements Servlet { 
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp);  
     } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
             try{ 
                 //Set connection properties required to invoke AEM Forms                                 
                 Properties connectionProps = new Properties(); 
                 connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
                 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 FormsServiceClient object 
                 ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                 FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
                 //Set parameter values for the (Deprecated) renderHTMLForm method 
                 String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";  
                 byte[]    cData = "".getBytes(); 
                 Document oInputData = new Document(cData); 
                 String userAgent = "" ; 
                                      
                 //Create an HTMLRenderSpec object to store HTML run-time options 
                 HTMLRenderSpec htmlRS = new HTMLRenderSpec(); 
                                                                          
                 //Specify the locale value 
                 htmlRS.setLocale("en_US"); 
                  
                 //Specify a custom CSS file to use 
                 htmlRS.setCustomCSSURI("C:\\Adobe\custom.css"); 
                  
                 //Render the HTML form within full HTML tags 
                 htmlRS.setOutputType(OutputType.FullHTMLTags); 
                                                                  
                 //Specify URI values that are required to render a form 
                 URLSpec uriValues = new URLSpec();  
                 uriValues.setApplicationWebRoot("http://[server]:[port]/FormsQS"); 
                 uriValues.setContentRootURI("repository:///"); 
                 uriValues.setTargetURL("http://[server]:[port]/FormsQS/HandleData"); 
                                  
                 //Specify file attachments 
                 FileInputStream myForm = new FileInputStream("C:\\Attach1.txt");  
                 Document attachment1 = new Document(myForm); 
                 FileInputStream myForm2 = new FileInputStream("C:\\Attach2.txt");  
                 Document attachment2 = new Document(myForm2); 
                 String fileName = "Attach1.txt"; 
                 String fileName2 = "Attach2.txt"; 
                      
                 Map fileAttachments = new HashMap(); 
                 fileAttachments.put(fileName, attachment1);  
                 fileAttachments.put(fileName2, attachment2);  
                          
                 //Invoke the (Deprecated) renderHTMLForm method 
                 FormsResult formOut = formsClient.renderHTMLForm( 
                     formName,               //formQuery 
                     TransformTo.MSDHTML,    //transformTo 
                     oInputData,             //inDataDoc 
                     htmlRS,                    //renderHTMLSpec 
                     userAgent,                //User Agent 
                     uriValues,                //urlSpec 
                     fileAttachments            //attachments 
                     ); 
          
                 //Create a Document object that stores form data 
                 Document myData = formOut.getOutputContent(); 
          
                 //Get the content type of the response and 
                 //set the HttpServletResponse object’s content type 
                 String contentType = myData.getContentType();  
                 resp.setContentType(contentType); 
          
                 //Create a ServletOutputStream object 
                 ServletOutputStream oOutput = resp.getOutputStream(); 
          
                 //Create an InputStream object 
                 InputStream inputStream = myData.getInputStream(); 
          
                 //Write the data stream to the web browser 
                 byte[] data = new byte[4096]; 
                 int bytesRead = 0; 
                 while ((bytesRead = inputStream.read(data)) > 0) 
                 { 
                     oOutput.write(data, 0, bytesRead); 
                 } 
          
             }catch (Exception e) { 
                      System.out.println("The following exception occurred: "+e.getMessage()); 
              } 
     } 
 }

Quick Start (SOAP mode): Rendering an HTML Form with a custom toolbar using the Java API

The following code example renders an HTML form with a toolbar that is displayed in French. The location of the fscmenu.xml is C:\Adobe (this folder must be on the server hosting AEM Forms). Notice that the locale value is fr_FR. The section that discusses how to render an HTML form with a custom toolbar shows the syntax of the fscmenu.xml file used in this quick start. (See Rendering HTML Forms with Custom Toolbars.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
  
 import java.util.*; 
 import java.io.InputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import java.io.FileInputStream; 
  
  
 public class RenderCustomToolbar extends HttpServlet implements Servlet { 
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp);  
     } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
             try{ 
                 //Set connection properties required to invoke AEM Forms     
                 Properties connectionProps = new Properties(); 
                 connectionProps.setProperty("DSC_DEFAULT_SOAP_ENDPOINT", "http://[server]:[port]"); 
                 connectionProps.setProperty("DSC_TRANSPORT_PROTOCOL","SOAP");           
                 connectionProps.setProperty("DSC_SERVER_TYPE", "JBoss"); 
                 connectionProps.setProperty("DSC_CREDENTIAL_USERNAME", "administrator"); 
                 connectionProps.setProperty("DSC_CREDENTIAL_PASSWORD", "password"); 
              
                 //Create a FormsServiceClient object 
                 ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                 FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
                 //Set parameter values for the renderHTMLForm method 
                 String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";   
                 byte[]    cData = "".getBytes(); 
                 Document oInputData = new Document(cData); 
                 String userAgent = "" ; 
                                      
                 //Create an HTMLRenderSpec object to store HTML run-time options 
                 HTMLRenderSpec htmlRS = new HTMLRenderSpec(); 
                 htmlRS.setHTMLToolbar(HTMLToolbar.Vertical); 
                                                          
                 //Specify the URI location of the  
                 // fscmenu.xml file that contains French 
                 htmlRS.setToolbarURI("C:\\Adobe"); 
                  
                 //Specify the locale value 
                 htmlRS.setLocale("fr_FR"); 
                                  
                 //Render the HTML form within full HTML tags 
                 htmlRS.setOutputType(OutputType.FullHTMLTags); 
                                                                  
                 //Specify URI values that are required to render a form 
                 URLSpec uriValues = new URLSpec();  
                 uriValues.setApplicationWebRoot("http://[server]:[port]/FormsQS"); 
                 uriValues.setContentRootURI("repository:///"); 
                 uriValues.setTargetURL("http://[server]:[port]/FormsQS/HandleData"); 
                                  
                 //Specify file attachments 
                 FileInputStream myForm = new FileInputStream("C:\\Attach1.txt");  
                 Document attachment1 = new Document(myForm); 
                 FileInputStream myForm2 = new FileInputStream("C:\\Attach2.txt");  
                 Document attachment2 = new Document(myForm2); 
                 String fileName = "Attach1.txt"; 
                 String fileName2 = "Attach2.txt"; 
                      
                 Map fileAttachments = new HashMap(); 
                 fileAttachments.put(fileName, attachment1);  
                 fileAttachments.put(fileName2, attachment2);  
                          
                 //Invoke the renderHTMLForm method 
                 FormsResult formOut = formsClient.renderHTMLForm( 
                     formName,               //formQuery 
                     TransformTo.MSDHTML,    //transformTo 
                     oInputData,             //inDataDoc 
                     htmlRS,                    //renderHTMLSpec 
                     userAgent,                //User Agent 
                     uriValues,                //urlSpec 
                     fileAttachments            //attachments 
                     ); 
          
                 //Create a Document object that stores form data 
                 Document myData = formOut.getOutputContent(); 
          
                 //Get the content type of the response and 
                 //set the HttpServletResponse object’s content type 
                 String contentType = myData.getContentType();  
                 resp.setContentType(contentType); 
          
                 //Create a ServletOutputStream object 
                 ServletOutputStream oOutput = resp.getOutputStream(); 
          
                 //Create an InputStream object 
                 InputStream inputStream = myData.getInputStream(); 
          
                 //Write the data stream to the web browser 
                 byte[] data = new byte[4096]; 
                 int bytesRead = 0; 
                 while ((bytesRead = inputStream.read(data)) > 0) 
                 { 
                     oOutput.write(data, 0, bytesRead); 
                 } 
          
                 }catch (Exception e) { 
                      System.out.println("The following exception occurred: "+e.getMessage()); 
                      } 
             } 
 } 
 

Quick Start (SOAP mode): Handling PDF forms submitted as XML using the Java API

The following code example handles a form that is submitted as XML. The content type value passed to the processFormSubmission method is CONTENT_TYPE=text/xml. The values that correspond to the fields named mortgageAmount, lastName, and firstName are displayed. A user-defined method named getNodeText is used in this quick start. It accepts an org.w3c.dom.Document instance and a string value that specifies the node name. This method returns a string value that represents the value of the node. (See Handling Submitted Forms.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 9. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.DataInputStream; 
 import java.io.File; 
 import java.io.InputStream; 
 import java.io.PrintWriter; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 //Import DOM libraries 
 import org.w3c.dom.NodeList; 
 import org.w3c.dom.Node; 
 import javax.xml.parsers.*; 
  
 public class HandleData extends HttpServlet implements Servlet { 
  
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
                 doPost(req,resp); 
         } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
         try{ 
             PrintWriter pp = resp.getWriter();      
              
             //Set connection properties required to invoke AEM Forms                                 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
             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 object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
             //Create a FormsServiceClient object 
             FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
             //Get Form data to pass to the processFormSubmission method 
             Document formData = new Document(req.getInputStream());  
                          
             //Set run-time options 
              RenderOptionsSpec processSpec = new RenderOptionsSpec();  
              processSpec.setLocale("en_US"); 
              
             //Invoke the processFormSubmission method 
             FormsResult formOut = formsClient.processFormSubmission(formData, 
             "CONTENT_TYPE=text/xml", 
             "", 
             processSpec); 
              
             //Get the processing state 
             short processState = formOut.getAction(); 
                          
             //Determine if the form data is ready to be processed 
             //This code example checks only for submitted data (value is 0) 
             if (processState == 0)  
             { 
               //Determine the content type of the data 
               String myContentType = formOut.getContentType(); 
               System.out.println("THE CONTENT TYPS IS" +myContentType); 
              
                if (myContentType.equals("application/vnd.adobe.xdp+xml"))    { 
              
                 //Get the form data 
                 Document formOutput = formOut.getOutputContent();  
                 InputStream formInputStream = new DataInputStream(formOutput.getInputStream());  
                  
                 //Create DocumentBuilderFactory and DocumentBuilder objects 
                 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
                 DocumentBuilder builder = factory.newDocumentBuilder(); 
                 org.w3c.dom.Document myDOM = builder.parse(formInputStream); 
                                          
                 //Call for each field in the form 
                 String Amount = getNodeText("mortgageAmount", myDOM); 
                 String myLastName =  getNodeText("lastName", myDOM);  
                 String myFirstName = getNodeText("firstName", myDOM); 
                  
                 //Write the form data to the web browser 
                 pp.println("<p> The form data is :<br><br>" + 
                         "<li> The mortgage amount is "+ Amount+"" + 
                         "<li> Last name is "+ myLastName+"" + 
                         "<li> First name is "+ myFirstName+"")    ; 
                  
                          
                 } 
              } 
             } 
         catch (Exception e) { 
              e.printStackTrace(); 
           } 
     } 
          
     //This method returns the value of the specified node 
     private String getNodeText(String nodeName, org.w3c.dom.Document myDOM) 
     { 
       //Get the XML node by name 
       NodeList oList = myDOM.getElementsByTagName(nodeName); 
       Node myNode = oList.item(0);  
       NodeList oChildNodes = myNode.getChildNodes(); 
                                   
      String sText = ""; 
      for (int i = 0; i < oChildNodes.getLength(); i++) 
      { 
          Node oItem = oChildNodes.item(i); 
         if (oItem.getNodeType() == Node.TEXT_NODE) 
          { 
            sText = sText.concat(oItem.getNodeValue()); 
          } 
      } 
     return sText; 
     } 
 } 
 

Note:

When using a com.adobe.idp.Document object and an org.w3c.dom.Document in the same application, fully qualify org.w3c.dom.Document.

Quick Start (SOAP mode): Handling PDF forms submitted as PDF using the Java API

The following code example handles a form that is submitted as PDF data. The content type value passed to the processFormSubmission method is CONTENT_TYPE=application/pdf. The submitted form is saved as a PDF file named tempPDF.pdf. Also, because the form is submitted as PDF, file attachments can be retrieved. Any file attachments are saved as JPEG files. (See Handling Submitted Forms.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.DataInputStream; 
 import java.io.File; 
 import java.io.InputStream; 
 import java.io.PrintWriter; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 //Import DOM libraries 
 import org.w3c.dom.NodeList; 
 import org.w3c.dom.Node; 
 import javax.xml.parsers.*; 
  
 public class HandleSubmittedPDFData extends HttpServlet implements Servlet { 
  
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
                 doPost(req,resp); 
         } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
         try{ 
             PrintWriter pp = resp.getWriter();      
              
             //Set connection properties required to invoke AEM Forms                                 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
             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 object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
             //Create a FormsServiceClient object 
             FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
             //Get Form data to pass to the processFormSubmission method 
             Document formData = new Document(req.getInputStream());  
                          
             //Set run-time options 
              RenderOptionsSpec processSpec = new RenderOptionsSpec();  
              processSpec.setLocale("en_US"); 
              
             //Invoke the processFormSubmission method 
             FormsResult formOut = formsClient.processFormSubmission(formData, 
             "CONTENT_TYPE=application/pdf", 
             "", 
             processSpec); 
              
             //Determine if the form contains file attachments 
             //It is assumed that file attachments are JPG files 
             List fileAttachments = formOut.getAttachments();  
                                  
             //Create an Iterator object and iterate through  
             //the List object 
             Iterator iter = fileAttachments.iterator();  
             int i = 0 ;  
             while (iter.hasNext()) {  
                 Document file = (Document)iter.next();  
                 file.copyToFile(new File("C:\\Adobe\tempFile"+i+".jpg")); 
                 i++;  
             } 
              
             //Get the processing state 
             short processState = formOut.getAction(); 
                          
             //Determine if the form data is ready to be processed 
             //This code example checks only for submitted data (value is 0) 
             if (processState == 0)  
             { 
               //Determine the content type of the data 
               String myContentType = formOut.getContentType(); 
              
               if (myContentType.equals("application/pdf")){ 
                      
                     //Get the form data 
                     Document myPDFfile = formOut.getOutputContent();  
                                      
                     //Create a PDF object 
                     File myPDFFile = new File("C:\\Adobe\tempPDF.pdf"); 
                      
                     //Populate the PDF file 
                     myPDFfile.copyToFile(myPDFFile);                     
                     pp.println("<p> The PDF file is saved as C:\\Adobe\tempPDF.pdf") ;  
                      
                 } 
               } 
         } 
         catch (Exception e) { 
              e.printStackTrace(); 
           } 
     } 
  
 } 
  
  
 

Quick Start (SOAP mode): Handling HTML forms submitted as XML using the Java API

The following code example handles an HTML form that is submitted as XML data. The content type value passed to the processFormSubmission method is CONTENT_TYPE=application/x-www-form-urlencoded.The values that correspond to the fields named mortgageAmount, lastName, and firstName are displayed. A user-defined method named getNodeText is used in this quick start. It accepts an org.w3c.dom.Document instance and a string value that specifies the node name. This method returns a string value that represents the value of the node. (See Handling Submitted Forms.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.DataInputStream; 
 import java.io.File; 
 import java.io.InputStream; 
 import java.io.PrintWriter; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 //Import DOM libraries 
 import org.w3c.dom.NodeList; 
 import org.w3c.dom.Node; 
 import javax.xml.parsers.*; 
  
 /* 
     * This quick start handles data submitted as XML from a rendered HTML form  
     */ 
 public class HandleSubmittedHTMLForm extends HttpServlet implements Servlet { 
  
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
                 doPost(req,resp); 
         } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
         try{ 
             PrintWriter pp = resp.getWriter();      
              
             //Set connection properties required to invoke AEM Forms                                 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
             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 object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
             //Create a FormsServiceClient object 
             FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
             //Get Form data to pass to the processFormSubmission method 
             Document formData = new Document(req.getInputStream());  
                          
             //Set run-time options 
              RenderOptionsSpec processSpec = new RenderOptionsSpec();  
              processSpec.setLocale("en_US"); 
              
             //Invoke the processFormSubmission method 
             FormsResult formOut = formsClient.processFormSubmission(formData, 
             "CONTENT_TYPE=application/x-www-form-urlencoded", 
             "", 
             processSpec); 
              
             //Get the processing state 
             short processState = formOut.getAction(); 
                          
             //Determine if the form data is ready to be processed 
             //This code example checks only for submitted data (value is 0) 
             if (processState == 0)  
             { 
              
                     //Get the form data 
                     Document formOutput = formOut.getOutputContent();  
                     InputStream formInputStream = new DataInputStream(formOutput.getInputStream());  
                                                      
                     //Create DocumentBuilderFactory and DocumentBuilder objects 
                     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
                     DocumentBuilder builder = factory.newDocumentBuilder(); 
                     org.w3c.dom.Document myDOM = builder.parse(formInputStream); 
                                              
                     //Call for each field in the form 
                     String Amount = getNodeText("mortgageAmount", myDOM); 
                     String myLastName =  getNodeText("lastName", myDOM);  
                     String myFirstName = getNodeText("firstName", myDOM); 
                      
                     //Write the form data to the web browser 
                     pp.println("<p> The form data is :<br><br>" + 
                             "<li> The mortgage amount is "+ Amount+"" + 
                             "<li> Last name is "+ myLastName+"" + 
                             "<li> First name is "+ myFirstName+"")    ; 
                      } 
                 } 
             catch (Exception e) { 
                  e.printStackTrace(); 
               } 
         } 
              
         //This method returns the value of the specified node 
         private String getNodeText(String nodeName, org.w3c.dom.Document myDOM) 
         { 
           //Get the XML node by name 
           NodeList oList = myDOM.getElementsByTagName(nodeName); 
           Node myNode = oList.item(0);  
           NodeList oChildNodes = myNode.getChildNodes(); 
                                       
          String sText = ""; 
          for (int i = 0; i < oChildNodes.getLength(); i++) 
          { 
              Node oItem = oChildNodes.item(i); 
             if (oItem.getNodeType() == Node.TEXT_NODE) 
              { 
                sText = sText.concat(oItem.getNodeValue()); 
              } 
          } 
         return sText; 
         } 
     } 
 

Quick Start (SOAP mode): Creating PDF Documents with submitted XML data using the Java API

The following Java code example handles form data that is submitted as XML. Form data is retrieved from the Form submission using the Forms API and sent to the Output service. The form data and a form design are used to create a non-interactive PDF document. The non-interactive PDF document is stored in a Content Services (deprecated) node named /Company Home/Test Directory. The name of the form is dynamically created. That is, the user’s first and last name are used to name the PDF file. The resource identifier of the new content is written out to the client web browser. (See Creating PDF Documents with Submitted XML Data.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
     * 20. adobe-output-client.jar 
     * 21. adobe-contentservices-client.jar 
     *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
  
 import com.adobe.livecycle.contentservices.client.CRCResult; 
 import com.adobe.livecycle.contentservices.client.impl.DocumentManagementServiceClientImpl; 
 import com.adobe.livecycle.contentservices.client.impl.UpdateVersionType; 
 import com.adobe.livecycle.formsservice.client.*; 
 import com.adobe.livecycle.output.client.OutputClient; 
 import com.adobe.livecycle.output.client.OutputResult; 
 import com.adobe.livecycle.output.client.PDFOutputOptionsSpec; 
 import com.adobe.livecycle.output.client.TransformationFormat; 
  
 import java.util.*; 
 import java.io.DataInputStream; 
 import java.io.File; 
 import java.io.InputStream; 
 import java.io.PrintWriter; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.InvocationRequest; 
 import com.adobe.idp.dsc.InvocationResponse; 
 import com.adobe.idp.dsc.clientsdk.ServiceClient; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 //Import DOM libraries 
 import org.w3c.dom.NodeList; 
 import org.w3c.dom.Node; 
 import javax.xml.parsers.*; 
  
 public class HandleDataSendToOutput extends HttpServlet implements Servlet { 
  
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
                 doPost(req,resp); 
         } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
         try{ 
             PrintWriter pp = resp.getWriter();      
              
             //Set connection properties required to invoke AEM Forms                                 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
             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 object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
             //Create a FormsServiceClient object 
             FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
             //Get Form data to pass to the processFormSubmission method 
             Document formData = new Document(req.getInputStream());  
                          
             //Set run-time options 
              RenderOptionsSpec processSpec = new RenderOptionsSpec();  
              processSpec.setLocale("en_US"); 
              
             //Invoke the processFormSubmission method 
             FormsResult formOut = formsClient.processFormSubmission(formData, 
             "CONTENT_TYPE=text/xml", 
             "", 
             processSpec); 
              
             //Get the processing state 
             short processState = formOut.getAction(); 
                          
             //Determine if the form data is ready to be processed 
             //This code example checks only for submitted data (value is 0) 
             if (processState == 0)  
             { 
               //Determine the content type of the data 
               String myContentType = formOut.getContentType(); 
              
               if (myContentType.equals("application/vnd.adobe.xdp+xml"))    { 
              
                 //Get the form data 
                 Document formOutput = formOut.getOutputContent();  
                 InputStream formInputStream = new DataInputStream(formOutput.getInputStream());  
                  
                 //Create DocumentBuilderFactory and DocumentBuilder objects 
                 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
                 DocumentBuilder builder = factory.newDocumentBuilder(); 
                 org.w3c.dom.Document myDOM = builder.parse(formInputStream); 
                                          
                 //Call for each field in the form 
                 String Amount = getNodeText("mortgageAmount", myDOM); 
                 String myLastName =  getNodeText("lastName", myDOM);  
                 String myFirstName = getNodeText("firstName", myDOM); 
                  
                 //Write the form data to the web browser 
                 pp.println("<p> The form data is :<br><br>" + 
                         "<li> The mortgage amount is "+ Amount+"" + 
                         "<li> Last name is "+ myLastName+"" + 
                         "<li> First name is "+ myFirstName+"")    ; 
                  
                  
                 //Create a non-interactive PDF document by invoking the Output service 
                 Document myPDFform = GeneratePDFDocument(myFactory, formOutput); 
                  
                 //Create the name of the PDF file to store 
                 String pdfName = "Loan_"+myLastName+"_"+myFirstName+".pdf" ; 
                 String userName = myFirstName+" "+myLastName ;  
                  
                 //Store the PDF form into Content Services (deprecated) 
                 String resourceID = StorePDFDocument(myFactory, myPDFform, pdfName,userName); 
                 pp.println("<p> The pdf document was store in :<br><br>" + 
                         "<li> /Company home "+ 
                         "<li> The identifier value of the new resource is "+ resourceID+""); 
                   } 
             } 
         } 
         catch (Exception e) { 
              e.printStackTrace(); 
           } 
     } 
          
      
     //Store the PDF document in /Company Home/Test Directory using the  
     //AEM Forms Content Service API 
     private String StorePDFDocument(ServiceClientFactory myFactory, com.adobe.idp.Document pdfDoc, String formName, String userName) 
     { 
         try 
         { 
             //Create a DocumentManagementServiceClientImpl object 
             DocumentManagementServiceClientImpl    docManager = new DocumentManagementServiceClientImpl(myFactory); 
              
             //Specify the store and node name 
             String storeName ="SpacesStore";  
             String nodeName = "/Company Home/Test Directory"; 
              
             //Create a MAP instance to store attributes 
             Map<String,Object> inputs = new HashMap<String,Object>(); 
              
             //Specify attributes that belong to the new content 
             String creator = "{http://www.alfresco.org/model/content/1.0}creator"; 
             String description = "{http://www.alfresco.org/model/content/1.0}description";  
              
             inputs.put(creator,userName); 
             inputs.put(description,"A mortgage application form"); 
                                  
             //Store MortgageForm.pdf in /Company Home/Test Directory 
             CRCResult result = docManager.storeContent(storeName,  
                      nodeName, 
                      formName, 
                     "{http://www.alfresco.org/model/content/1.0}content",  
                     pdfDoc, 
                     "UTF-8", 
                     UpdateVersionType.INCREMENT_MAJOR_VERSION, 
                     null, 
                     inputs);  
             //Get the identifier value of the new resource 
             String id = result.getNodeUuid(); 
             return id;  
     } 
         catch (Exception ee) 
         { 
             ee.printStackTrace(); 
         } 
         return null ;  
     } 
      
      
     //This method returns the value of the specified node 
     private com.adobe.idp.Document GeneratePDFDocument(ServiceClientFactory myFactory, com.adobe.idp.Document formData) 
     { 
         try 
         { 
         //Create an OutputClient object 
         OutputClient outClient = new OutputClient(myFactory);  
              
         //Set PDF run-time options     
         com.adobe.livecycle.output.client.PDFOutputOptionsSpec outputOptions = new PDFOutputOptionsSpec(); 
         outputOptions.setLocale("en_US"); 
              
         //Set rendering run-time options 
         com.adobe.livecycle.output.client.RenderOptionsSpec pdfOptions = new com.adobe.livecycle.output.client.RenderOptionsSpec();  
         pdfOptions.setLinearizedPDF(true); 
                                  
         //Create a PDF document             
         OutputResult outputDocument = outClient.generatePDFOutput( 
             TransformationFormat.PDF, 
             "Loan.xdp", 
             "C:\\Adobe", 
             outputOptions, 
             pdfOptions, 
             formData 
         ); 
      
         //Get the Generated PDF file  
         Document ouputDoc = outputDocument.getGeneratedDoc(); 
         return ouputDoc ;  
         } 
         catch (Exception ee) 
         { 
             ee.printStackTrace(); 
         } 
         return null;  
     } 
      
     //This method returns the value of the specified node 
     private String getNodeText(String nodeName, org.w3c.dom.Document myDOM) 
     { 
       //Get the XML node by name 
       NodeList oList = myDOM.getElementsByTagName(nodeName); 
       Node myNode = oList.item(0);  
       NodeList oChildNodes = myNode.getChildNodes(); 
                                   
      String sText = ""; 
      for (int i = 0; i < oChildNodes.getLength(); i++) 
      { 
          Node oItem = oChildNodes.item(i); 
         if (oItem.getNodeType() == Node.TEXT_NODE) 
          { 
            sText = sText.concat(oItem.getNodeValue()); 
          } 
      } 
     return sText; 
     } 
 }

Quick Start (SOAP mode): Prepopulating Forms with Flowable Layouts using the Java API

The following code example prepopulates a form with a dynamic data source. That is, the data source is created at run-time and is not contained within an XML file or created during design time. This code example contains three user-defined methods:

  • createDataSource: Creates an org.w3c.dom.Document object that represents the data source that is used to prepopulate the form. This user-defined method returns the org.w3c.dom.Document object.

  • convertDataSource: Converts an org.w3c.dom.Document object to a com.adobe.idp.Document object. This method accepts an org.w3c.dom.Document object as an input parameter and returns a com.adobe.idp.Document object.

  • renderPOForm: Uses the Forms service Java API to render a dynamic purchase order form. The com.adobe.idp.Document object that was returned by the convertDataSource method is used to prepopulate the form.

    All of these methods are invoked from within the Java servlet’s doPost method. (See Prepopulating Forms with Flowable Layouts.)

/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are located in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client. * ;
import java.util. * ;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
import org.w3c.dom.Element;
import javax.xml.parsers. * ;
import javax.xml.transform. * ;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public class RenderDynamicForm extends HttpServlet implements Servlet {
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException,
	IOException {
		doPost(req, resp);
	}
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException,
	IOException {
		//Render a dynamic purchase order form
		//Create an org.w3c.dom.Document object
		org.w3c.dom.Document myDom = createDataSource();
		//Convert the org.w3c.dom.Document object
		//to a com.adobe.idp.Document object
		com.adobe.idp.Document formData = convertDataSource(myDom);
		//Render the dynamic form using data located within the
		//com.adobe.idp.Document object
		renderPOForm(resp, formData);
	}
	//Creates an org.w3c.dom.Document object
	private org.w3c.dom.Document createDataSource() {
		org.w3c.dom.Document document = null;
		try {
			//Create DocumentBuilderFactory and DocumentBuilder objects
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			//Create a new Document object
			document = builder.newDocument();
			//Create the root element and append it to the XML DOM
			Element root = (Element) document.createElement("transaction");
			document.appendChild(root);
			//Create the header element
			Element header = (Element) document.createElement("header");
			root.appendChild(header);
			//Create the txtPONum element and append it to the
			//header element
			Element txtPONum = (Element) document.createElement("txtPONum");
			txtPONum.appendChild(document.createTextNode("8745236985"));
			header.appendChild(txtPONum);
			//Create the dtmDate element and append it to the
			//header element
			Element dtmDate = (Element) document.createElement("dtmDate");
			dtmDate.appendChild(document.createTextNode("2007-02-08"));
			header.appendChild(dtmDate);
			//Create the orderedByAddress element and append
			//it to the header element
			Element orderedByAddress = (Element) document.createElement("orderedByAddress");
			orderedByAddress.appendChild(document.createTextNode("222, Any Blvd"));
			header.appendChild(orderedByAddress);
			//Create the txtOrderedByPhone element and append
			//it to the header element
			Element txtOrderedByPhone = (Element) document.createElement("txtOrderedByPhone");
			txtOrderedByPhone.appendChild(document.createTextNode("(555) 555-2334"));
			header.appendChild(txtOrderedByPhone);
			//Create the txtOrderedByFax element and append
			//it to the header element
			Element txtOrderedByFax = (Element) document.createElement("txtOrderedByFax");
			txtOrderedByFax.appendChild(document.createTextNode("(555) 555-9334"));
			header.appendChild(txtOrderedByFax);
			//Create the txtOrderedByContactName element and append
			//it to the header element
			Element txtOrderedByContactName = (Element) document.createElement("txtOrderedByContactName");
			txtOrderedByContactName.appendChild(document.createTextNode("Frank Jones"));
			header.appendChild(txtOrderedByContactName);
			//Create the deliverToAddress element and append
			//it to the header element
			Element deliverToAddress = (Element) document.createElement("deliverToAddress");
			deliverToAddress.appendChild(document.createTextNode("555, Any Blvd"));
			header.appendChild(deliverToAddress);
			//Create the txtDeliverToPhone element and append
			//it to the header element
			Element txtDeliverToPhone = (Element) document.createElement("txtDeliverToPhone");
			txtDeliverToPhone.appendChild(document.createTextNode("(555) 555-9098"));
			header.appendChild(txtDeliverToPhone);
			//Create the txtDeliverToFax element and append
			//it to the header element
			Element txtDeliverToFax = (Element) document.createElement("txtDeliverToFax");
			txtDeliverToFax.appendChild(document.createTextNode("(555) 555-9000"));
			header.appendChild(txtDeliverToFax);
			//Create the txtDeliverToContactName element and
			//append it to the header element
			Element txtDeliverToContactName = (Element) document.createElement("txtDeliverToContactName");
			txtDeliverToContactName.appendChild(document.createTextNode("Jerry Johnson"));
			header.appendChild(txtDeliverToContactName);
			//Create the detail element and append it to the root
			Element detail = (Element) document.createElement("detail");
			root.appendChild(detail);

			//Create the txtPartNum element and append it to the
			//detail element
			Element txtPartNum = (Element) document.createElement("txtPartNum");
			txtPartNum.appendChild(document.createTextNode("00010-100"));
			detail.appendChild(txtPartNum);
			//Create the txtDescription element and append it
			//to the detail element
			Element txtDescription = (Element) document.createElement("txtDescription");
			txtDescription.appendChild(document.createTextNode("Monitor"));
			detail.appendChild(txtDescription);
			//Create the numQty element and append it to
			//the detail element
			Element numQty = (Element) document.createElement("numQty");
			numQty.appendChild(document.createTextNode("1"));
			detail.appendChild(numQty);
			//Create the numUnitPrice element and append it
			//to the detail element
			Element numUnitPrice = (Element) document.createElement("numUnitPrice");
			numUnitPrice.appendChild(document.createTextNode("350.00"));
			detail.appendChild(numUnitPrice);
			//Create another detail element named detail2 and
			//append it to root
			Element detail2 = (Element) document.createElement("detail");
			root.appendChild(detail2);
			//Create the txtPartNum element and append it to the
			//detail2 element
			Element txtPartNum2 = (Element) document.createElement("txtPartNum");
			txtPartNum2.appendChild(document.createTextNode("00010-200"));
			detail2.appendChild(txtPartNum2);
			//Create the txtDescription element and append it
			//to the detail2 element
			Element txtDescription2 = (Element) document.createElement("txtDescription");
			txtDescription2.appendChild(document.createTextNode("Desk lamps"));
			detail2.appendChild(txtDescription2);
			//Create the numQty element and append it to the
			//detail2 element
			Element numQty2 = (Element) document.createElement("numQty");
			numQty2.appendChild(document.createTextNode("3"));
			detail2.appendChild(numQty2);
			//Create the NUMUNITPRICE element
			Element numUnitPrice2 = (Element) document.createElement("numUnitPrice");
			numUnitPrice2.appendChild(document.createTextNode("55.00"));
			detail2.appendChild(numUnitPrice2);
		}
		catch(Exception e) {
			System.out.println("The following exception occurred: " + e.getMessage());
		}
		return document;

	}
	//Converts an org.w3c.dom.Document object to a
	//com.adobe.idp.Document object
	private Document convertDataSource(org.w3c.dom.Document myDOM) {
		byte[] mybytes = null;
		try {
			//Create a Java Transformer object
			TransformerFactory transFact = TransformerFactory.newInstance();
			Transformer transForm = transFact.newTransformer();
			//Create a Java ByteArrayOutputStream object
			ByteArrayOutputStream myOutStream = new ByteArrayOutputStream();
			//Create a Java Source object
			javax.xml.transform.dom.DOMSource myInput = new DOMSource(myDOM);
			//Create a Java Result object
			javax.xml.transform.stream.StreamResult myOutput = new StreamResult(myOutStream);
			//Populate the Java ByteArrayOutputStream object
			transForm.transform(myInput, myOutput);
			// Get the size of the ByteArrayOutputStream buffer
			int myByteSize = myOutStream.size();
			//Allocate myByteSize to the byte array
			mybytes = new byte[myByteSize];
			//Copy the content to the byte array
			mybytes = myOutStream.toByteArray();
		}
		catch(Exception e) {
			System.out.println("The following exception occurred: " + e.getMessage());
		}
		//Create a com.adobe.idp.Document object and copy the
		//contents of the byte array
		Document myDocument = new Document(mybytes);
		return myDocument;
	}
	//Render the purchase order form using the specified
	//com.adobe.idp.Document object
	private void renderPOForm(HttpServletResponse resp, Document formData) {
		try {
			//Set connection properties required to invoke AEM Forms
			Properties connectionProps = new Properties();
			connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]");
			connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL, ServiceC
			lientFactoryProperties.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 object
			ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps);
			//Create a FormsServiceClient object
			FormsServiceClient formsClient = new FormsServiceClient(myFactory);
			//Set the parameter values for the renderPDFForm method
			String formName = "Applications/FormsApplication/1.0/FormsFolder/PO.xdp";
			//Cache the form
			PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec();
			pdfFormRenderSpec.setCacheEnabled(new Boolean(true));
			//Specify URI values that are required to render a form
			URLSpec uriValues = new URLSpec();
			uriValues.setApplicationWebRoot("http://[server]:[port]/FormsQS");
			uriValues.setContentRootURI("repository:///");
			uriValues.setTargetURL("http://[server]:[port]/FormsQS/HandleData");
			//Invoke the renderForm method
			FormsResult formOut = formsClient.renderPDFForm(
			formName, //formQuery
			formData, //inDataDoc
			pdfFormRenderSpec, //PDFFormRenderSpec
			uriValues, //urlSpec
			null //attachments
			);
			//Create a ServletOutputStream object
			ServletOutputStream oOutput = resp.getOutputStream();
			//Create a Document object that stores form data
			Document myData = formOut.getOutputContent();
			//Create an InputStream object
			InputStream inputStream = myData.getInputStream();
			//Write the data stream to the web browser
			byte[] data = new byte[4096];
			int bytesRead = 0;
			while ((bytesRead = inputStream.read(data)) > 0) {
				oOutput.write(data, 0, bytesRead);
			}
		} catch(Exception e) {
			System.out.println("The following exception occurred: " + e.getMessage());
		}
	}
}

Quick Start (SOAP mode): Handling a form containing a calculation script using the Java API

The following code example processes a form that contains a calculation script and writes the results back to the client web browser. (See Calculating Form Data.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.InputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class CalculateData extends HttpServlet implements Servlet { 
  
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp); 
     } 
  
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
              
         try{ 
             //Set connection properties required to invoke AEM Forms                                 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
             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 object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
             //Create a FormsServiceClient object 
             FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
             //Get form data to pass to the processFormSubmission method 
             Document formData = new Document(req.getInputStream());  
  
             //Set run-time options 
             RenderOptionsSpec processSpec = new RenderOptionsSpec();  
             processSpec.setLocale("en_US"); 
                                    
             //Invoke the processFormSubmission method 
             FormsResult formOut = formsClient.processFormSubmission(formData,"CONTENT_TYPE=application/pdf&CONTENT_TYPE=application/vnd.adobe.xdp+xml","",processSpec); 
              
             //Get the processing state 
             short processState = formOut.getAction(); 
              
             //Determine if the form data is calculated 
             if (processState == 1)  
             { 
                  
                 //Write the data back to to the client web browser 
                 ServletOutputStream oOutput = resp.getOutputStream(); 
                 Document calData = formOut.getOutputContent(); 
                  
                 //Create an InputStream object 
                 InputStream inputStream = calData.getInputStream(); 
          
                 //Write the data stream to the web browser 
                 byte[] data = new byte[4096]; 
                 int bytesRead = 0; 
                 while ((bytesRead = inputStream.read(data)) > 0) 
                 { 
                     oOutput.write(data, 0, bytesRead); 
                 } 
              } 
             } 
         catch (Exception e) { 
              System.out.println("The following exception occurred: "+e.getMessage()); 
         } 
     } 
 }

Quick Start (SOAP mode): Optimizing performance using the Java API

The following code example optimizes performance by setting the caching, standalone, and linearized options. A linearized file is optimized for delivery on the web. (See Optimizing the Performance of the Forms Service.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.InputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class RenderFormsPerformance extends HttpServlet implements Servlet { 
      
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp);  
     } 
  
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
     try{ 
              
         //Set connection properties required to invoke AEM Forms                                 
         Properties connectionProps = new Properties(); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
         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 object 
         ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
         //Create a FormsServiceClient object 
         FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
         //Set the parameter values for the renderForm method 
         String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";  
         byte[]    cData = "".getBytes(); 
         Document oInputData = new Document(cData); 
                      
         //Set performance run-time options 
         PDFFormRenderSpec renderSpec = new PDFFormRenderSpec();  
         renderSpec.setCacheEnabled(new Boolean(true)); 
         renderSpec.setLinearizedPDF(true); 
                  
         //Specify URI values that are required to render a form 
         //design located in the AEM Forms Repository 
         URLSpec uriValues = new URLSpec();  
         uriValues.setApplicationWebRoot("http://[server]:[port]/FormsServiceClientApp"); 
         uriValues.setContentRootURI("repository:///"); 
         uriValues.setTargetURL("http://[server]:[port]/FormsServiceClientApp/HandleData"); 
                  
         //Invoke the renderPDFForm method and write the  
         //results to a client web browser 
         FormsResult formOut = formsClient.renderPDFForm( 
                     formName,       //formQuery 
                     oInputData,     //inDataDoc 
                     renderSpec,     //PDFFormRenderSpec 
                     uriValues,        //urlSpec 
                     null            //attachments 
                     ); 
          
         //Create a ServletOutputStream object 
         ServletOutputStream oOutput = resp.getOutputStream(); 
          
         //Create a Document object that stores form data 
         Document myData = formOut.getOutputContent(); 
          
         //Create an InputStream object 
         InputStream inputStream = myData.getInputStream(); 
          
         //Write the data stream to the web browser 
         byte[] data = new byte[4096]; 
         int bytesRead = 0; 
         while ((bytesRead = inputStream.read(data)) > 0) 
         { 
             oOutput.write(data, 0, bytesRead); 
         } 
          
         }catch (Exception e) { 
              System.out.println("The following exception occurred: "+e.getMessage()); 
       } 
     } 
 }

Quick Start (SOAP mode): Rendering by value using the Java API

The following Java quick start renders an interactive PDF form that is based on a form design named Loan.xdp by value. Notice that the form design is used to populate a com.adobe.idp.Document object named inputXDP. (See Rendering Forms By Value.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. commons-codec-1.3.jar (required for SOAP mode) 
    * 7. commons-collections-3.2.jar  (required for SOAP mode) 
    * 8. commons-discovery.jar (required for SOAP mode) 
    * 9. commons-logging.jar (required for SOAP mode) 
    * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 12. jaxrpc.jar (required for SOAP mode) 
    * 13. log4j.jar (required for SOAP mode) 
    * 14. mail.jar (required for SOAP mode) 
    * 15. saaj.jar (required for SOAP mode) 
    * 16. wsdl4j.jar (required for SOAP mode) 
    * 17. xalan.jar (required for SOAP mode) 
    * 18. xbean.jar (required for SOAP mode) 
    * 19. xercesImpl.jar (required for SOAP mode) 
    *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms. 
     */ 
 import java.io.FileInputStream; 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
  
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import com.adobe.livecycle.formsservice.client.*; 
 import java.util.*; 
 import java.io.InputStream; 
  
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class RenderByValue extends HttpServlet implements Servlet { 
  
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp); 
     } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
         try{ 
             //Set connection properties required to invoke AEM Forms                                 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
             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 object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
             //Create a FormsServiceClient object 
             FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
          
             //Retrieve the form design 
             FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\Loan.xdp");  
             Document inputXDP = new Document(fileInputStream); 
          
             //Specify URI values that are required to render a form 
             URLSpec uriValues = new URLSpec();  
             uriValues.setApplicationWebRoot("http://[server]:[port]/FormsQS"); 
             uriValues.setTargetURL("http://[server]:[port]/FormsQS/HandleData"); 
                      
             //Invoke the renderPDFForm method and pass the  
             //form design by value 
             FormsResult formOut = formsClient.renderPDFForm( 
                         "",                     //formQuery 
                         inputXDP,                 //inDataDoc 
                         new PDFFormRenderSpec(), //PDFFormRenderSpec 
                         uriValues,                //urlSpec 
                         null                    //attachments 
                         ); 
          
             //Create a Document object that stores form data 
             Document myData = formOut.getOutputContent(); 
          
             //Get the content type of the response and 
             //set the HttpServletResponse object?s content type 
             String contentType = myData.getContentType();  
             resp.setContentType(contentType); 
          
             //Create a ServletOutputStream object 
             ServletOutputStream oOutput = resp.getOutputStream(); 
          
             //Create an InputStream object 
             InputStream inputStream = myData.getInputStream(); 
          
             //Write the data stream to the web browser 
             byte[] data = new byte[4096]; 
             int bytesRead = 0; 
             while ((bytesRead = inputStream.read(data)) > 0) 
             { 
                 oOutput.write(data, 0, bytesRead); 
             } 
          
             }catch (Exception e) { 
                  e.printStackTrace(); 
               } 
         } 
 }

Quick Start (SOAP mode): Passing documents to the Forms Service using the Java API

The following Java quick start retrieves the file Loan.xdp from Content Services (deprecated). This XDP file is located in the space /Company Home/Form Designs. The XDP file is returned in a com.adobe.idp.Document instance. The com.adobe.idp.Document instance is passed to the Forms service. The interactive form is written to a client web browser. (See Passing Documents to the Forms Service.)

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-forms-client.jar 
     * 2. adobe-contentservices-client.jar 
     * 3. adobe-livecycle-client.jar 
     * 4. adobe-usermanager-client.jar 
     *  
     *  (Because Forms quick starts are implemented as Java servlets, it is  
     *  not necessary to include J2EE specific JAR files - the Java project 
     *  that contains this quick start is exported as a WAR file which 
     *  is deployed to the J2EE application server) 
     *   
     *  These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     *  
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms. 
     */ 
 import java.io.IOException; 
 import javax.servlet.Servlet; 
 import javax.servlet.ServletException; 
 import javax.servlet.ServletOutputStream; 
 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
  
 import com.adobe.livecycle.contentservices.client.CRCResult; 
 import com.adobe.livecycle.contentservices.client.impl.DocumentManagementServiceClientImpl; 
 import com.adobe.livecycle.formsservice.client.*; 
  
 import java.util.*; 
 import java.io.InputStream; 
  
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class RenderFormsFromContentServices extends HttpServlet implements Servlet { 
  
     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
             doPost(req,resp); 
     } 
      
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException { 
         try{ 
             //Set connection properties required to invoke AEM Forms 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
             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 object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                  
             //Create a FormsServiceClient object 
             FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
                          
             //Create an empty Document that represents form data 
             byte[]    cData = "".getBytes(); 
             Document oInputData = new Document(cData); 
              
             //Get the form design from Content Services (deprecated) 
             Document formDesign =  GetFormDesign(myFactory); 
                                      
             //Cache the PDF form 
             PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec(); 
             pdfFormRenderSpec.setCacheEnabled(new Boolean(true)); 
                      
             //Invoke the renderPDFForm2 and pass to the  
             //Document that contains the form design 
             FormsResult formOut = formsClient.renderPDFForm2( 
                     formDesign,               
                     oInputData,              
                     pdfFormRenderSpec,       
                     null,                 
                     null             
                     ); 
          
             //Create a Document object that stores form data 
             Document myData = formOut.getOutputContent(); 
          
             //Get the content type of the response and 
             //set the HttpServletResponse object?s content type 
             String contentType = myData.getContentType();  
             resp.setContentType(contentType); 
          
             //Create a ServletOutputStream object 
             ServletOutputStream oOutput = resp.getOutputStream(); 
          
             //Create an InputStream object 
             InputStream inputStream = myData.getInputStream(); 
          
             //Write the data stream to the web browser 
             byte[] data = new byte[4096]; 
             int bytesRead = 0; 
             while ((bytesRead = inputStream.read(data)) > 0) 
             { 
                 oOutput.write(data, 0, bytesRead); 
             } 
          
             }catch (Exception e) { 
                  e.printStackTrace(); 
               } 
         } 
          
     //Retrieve the form design from Content Services (deprecated) 
     private Document GetFormDesign(ServiceClientFactory myFactory) 
     { 
         try{ 
              
         //Create a DocumentManagementServiceClientImpl object 
         DocumentManagementServiceClientImpl    docManager = new DocumentManagementServiceClientImpl(myFactory);  
              
         //Specify the name of the store and the content to retrieve 
            String storeName = "SpacesStore"; 
            String nodeName  = "/Company Home/Form Designs/Loan.xdp"; 
  
            //Retrieve /Company Home/Form Designs/Loan.xdp 
            CRCResult content = docManager.retrieveContent( 
                      storeName, 
                      nodeName, 
                      ""); 
      
            //Return the Document instance 
             Document doc =content.getDocument();  
             return  doc; 
          } 
              
         catch(Exception e) 
         { 
             e.printStackTrace(); 
         } 
         return null;  
     } 
      
 } 
 

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License  Twitter™ and Facebook posts are not covered under the terms of Creative Commons.

Legal Notices   |   Online Privacy Policy