Quick Start (Base64): Rendering by value using the web service 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 the BLOB object named inputXDP. (See Rendering Forms By Value.)

/* 
    * 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 java.io.FileInputStream; 
 
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.URLSpec; 
import com.adobe.idp.services.holders.BLOBHolder; 
import com.adobe.idp.services.holders.FormsResultHolder; 
 
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{ 
         
            com.adobe.idp.services.FormsServiceServiceLocator sl = new FormsServiceServiceLocator(); 
            FormsService formsOb = sl.getFormsService(); 
                 
            //Specify the user name and password to invoke LiveCycle 
            ((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"); 
                     
            //Specify file attachments to attach to the form 
            FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\Loan.xdp"); 
            BLOB inputXDP = new BLOB();  
            int len = fileInputStream.available();  
            byte []fileStream = new byte[len] ; 
            fileInputStream.read(fileStream);  
            inputXDP.setBinaryData(fileStream);  
                 
            //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 
            formsOb.renderPDFForm( 
                      "",                   
                      inputXDP,              
                      new PDFFormRenderSpec(),         
                      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()); 
            }     
    } 
}