Quick Start (Base64): Rendering an HTML form that uses a CSS file using the web service API

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

/* 
    * 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 RenderHTMLFormsWSCSS 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); 
                 
                //Render the HTML form within full HTML tags 
                htmlRS.setOutputType(OutputType.FullHTMLTags); 
                 
                //Specify a custom CSS file to use 
                htmlRS.setCustomCSSURI("C:\\Adobe\custom.css"); 
                 
                //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()); 
                }     
        } 
}