Quick Start (Base64): Rendering a form at the client using the web service API

The following code example renders a form at the client using the Forms web service API. The form design named Loan.xdp is located in the C:\Adobe folder. (See Rendering Forms at the Client.)

/* 
    * Ensure that you create the Java proxy classes to use  
    * base64 encoding. This is required to populate a BLOB  
    * object with data or retrieve data from a BLOB object. 
    *  
    * For information, see "Creating Java proxy classes using Apache Axis"  
    * in Programming with LiveCycle.   
    */ 
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 javax.xml.rpc.holders.LongHolder; 
import javax.xml.rpc.holders.StringHolder; 
import com.adobe.idp.services.BLOB; 
import com.adobe.idp.services.FormsService; 
import com.adobe.idp.services.FormsServiceServiceLocator; 
import com.adobe.idp.services.PDFFormRenderSpec; 
import com.adobe.idp.services.RenderAtClient; 
import com.adobe.idp.services.URLSpec; 
import com.adobe.idp.services.holders.BLOBHolder; 
import com.adobe.idp.services.holders.FormsResultHolder; 
 
 
public class RenderPDFFormClientWS 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{ 
         
            com.adobe.idp.services.FormsServiceServiceLocator sl = new FormsServiceServiceLocator(); 
            FormsService formsOb = sl.getFormsService(); 
                 
            ((javax.xml.rpc.Stub)formsOb)._setProperty(javax.xml.rpc.Stub. 
            USERNAME_PROPERTY, "administrator"); 
            ((javax.xml.rpc.Stub)formsOb)._setProperty(javax.xml.rpc.Stub. 
            PASSWORD_PROPERTY, "password"); 
                                     
            //Set run-time options required to render a form on the client 
            PDFFormRenderSpec pdfRenderSpec = new PDFFormRenderSpec();  
            pdfRenderSpec.setRenderAtClient(RenderAtClient.Yes); 
                         
            //Specify URI values used by the Forms service 
            URLSpec uriValues = new URLSpec();  
            uriValues.setApplicationWebRoot("http://localhost:8080/FormsWSQS"); 
            uriValues.setContentRootURI("C:\\Adobe"); 
            uriValues.setTargetURL("http://localhost:8080/FormsWSQS/HandleData"); 
                         
            //Create class holder objects                 
            BLOBHolder outRenderPDFFormResultDoc = new BLOBHolder();  
            FormsResultHolder formsResult = new FormsResultHolder();  
            LongHolder longHolder = new LongHolder();  
            StringHolder stringHolder = new StringHolder();   
                                 
            //Invoke the renderPDFForm method to render  
            //an interactive PDF form on the client 
            formsOb.renderPDFForm( 
                      "Loan.xdp",                   
                      null,              
                      pdfRenderSpec ,         
                      uriValues,                 
                      null,                      
                      outRenderPDFFormResultDoc, 
                      longHolder, 
                      stringHolder, 
                      formsResult);  
         
            //Create a BLOB object that contains form data 
            BLOB formData = formsResult.value.getOutputContent(); 
                 
            //Get the content type of the response and 
            //set the HttpServletResponse object's content type 
            String contentType = formData.getContentType(); 
            resp.setContentType(contentType); 
         
            //Create a ServletOutputStream object 
            ServletOutputStream oOutput = resp.getOutputStream(); 
                             
            //Create a byte array that stores form data in the BLOB object 
            byte[] cContent = formData.getBinaryData(); 
         
            //Write a byte stream back to the web browser.  
            //Pass the byte array 
            oOutput.write(cContent); 
                         
        }catch (Exception e) { 
             System.out.println("The following error occurred during this operation " +e.getMessage()); 
            }     
    } 
}

// Ethnio survey code removed