Quick Start (Base64): Rendering a rights-enabled form using the web service API

The following code example renders a rights-enabled form to a client web browser using the Forms web service API. The usage rights set in this code example enables a user to add comments in the form and save form data in Adobe Reader (typically this functionality is not available in Adobe Reader). (See Rendering Rights-Enabled Forms.)

    * 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 com.adobe.idp.services.*; 
public class RenderUsageRightsFormsWS extends HttpServlet implements Servlet { 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException { 
    public void doPost(HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException { 
        //Create a FormsService object and set authentication values 
        FormsServiceServiceLocator sl = new FormsServiceServiceLocator(); 
        FormsService formsClient = sl.getFormsService(); 
        ((javax.xml.rpc.Stub)formsClient)._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY, "administrator"); 
        ((javax.xml.rpc.Stub)formsClient)._setProperty(javax.xml.rpc.Stub.PASSWORD_PROPERTY, "password"); 
        //Set the parameter values 
        String formName = "Loan.xdp";  
        String userAgent = "" ; 
        //Create a BLOB object to pass to the renderPDFFormWithUsageRights method  
        //Reference an XML file that matches the form schema but does not  
        //contain values 
        //A BLOB object cannot be NULL 
        FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\Loan_data_empty.xml"); 
        BLOB dataMerge = new BLOB();  
        int len = fileInputStream.available();  
        byte [] myStream = new byte[len] ; 
        //Set run-time options  
        PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec(); 
        pdfFormRenderSpec.setCacheEnabled(new Boolean(true)); 
        //Set URI values required by the Forms service to render the form 
        URLSpec uriValues = new URLSpec();  
         //Set usage-rights options 
        ReaderExtensionSpec reOptions = new ReaderExtensionSpec(); 
        //Render a rights-enabled PDF form 
        FormsResult formOut = formsClient.renderPDFFormWithUsageRights( 
                  formName,            //formQuery 
                  dataMerge,          //inDataDoc  
                  pdfFormRenderSpec,   //renderFormOptionsSpec 
                  reOptions,              //applicationWebRoot 
                  uriValues            //targetURL 
        //Create a BLOB object that contains form data 
        BLOB formData = formOut.getOutputContent(); 
        //Get the content type of the response and 
        //set the HttpServletResponse object's content type 
        String contentType = formData.getContentType(); 
        //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 
        }catch (Exception e) { 
            System.out.println("The following error occurred: " +e.getMessage()); 

// Ethnio survey code removed