Quick Start (Base64): Rendering an HTML Form with a custom toolbar using the web service API

The following Java 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 LiveCycle). 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.)

/* 
    * 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.FileInputStream; 
import java.io.IOException; 
import java.util.HashMap; 
 
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.OutputType; 
import com.adobe.idp.services.FormsServiceServiceLocator; 
import com.adobe.idp.services.HTMLRenderSpec; 
import com.adobe.idp.services.HTMLToolbar; 
import com.adobe.idp.services.TransformTo; 
import com.adobe.idp.services.URLSpec; 
import com.adobe.idp.services.holders.BLOBHolder; 
import com.adobe.idp.services.holders.FormsResultHolder; 
 
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{ 
         
                //Create a FormsService object and set authentication values 
                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"); 
                                     
                //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 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 file attachments to attach to the form 
                FileInputStream fileAttachment = new FileInputStream("C:\\rideau1.jpg");  
                BLOB attachment1 = new BLOB();  
                int len = fileAttachment.available();  
                byte []fileStream = new byte[len] ; 
                fileAttachment.read(fileStream);  
                attachment1.setBinaryData(fileStream);  
                String fileName = "rideau1.jpg"; 
                 
                //Create a HashMap object to store file attachments 
                HashMap fileAttachments = new HashMap(); 
                fileAttachments.put(fileName, attachment1);  
                 
                //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();  
                BLOBHolder blobHolder = new BLOBHolder();  
                LongHolder longHolder = new LongHolder();  
                StringHolder stringHolder = new StringHolder();   
                StringHolder stringHolder2 = new StringHolder();  
                                 
                //Invoke the renderHTMLForm method to render  
                //an HTML form 
                formsOb.renderHTMLForm( 
                              "Loan.xdp",                   
                              TransformTo.MSDHTML, 
                              null,              
                              htmlRS , 
                              "",         
                              uriValues,                 
                              null,                      
                              outRenderPDFFormResultDoc, 
                              blobHolder, 
                              longHolder, 
                              stringHolder, 
                              stringHolder2, 
                              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()); 
                }     
        } 
}