import java.io.*;
import java.net.URL;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.*;
import java.util.*;
import org.w3c.dom.*;
//import org.apache.xalan.xslt.*;
import org.apache.fop.apps.Driver;
import org.apache.fop.apps.Version;
//import javax.xml.transform.TransformerFactory;
//import javax.xml.transform.Transformer;
//import javax.xml.transform.Source;
//import javax.xml.parsers.*;
//import javax.xml.transform.stream.StreamSource;
//import javax.xml.transform.stream.StreamResult;
import org.xml.sax.*;
//import com.jclark.xsl.sax.*;
//import com.jclark.xml.parse.*;
//import com.jclark.xml.parse.io.*;

public class testPDF extends HttpServlet {
 
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
      ServletOutputStream out = response.getOutputStream();
      try {
        out.println("<HTML>\n");
        out.println("<HEAD>\n");
        out.println("<BODY>\n");
        out.println("<CENTER><H1>FOP and PDF Creation.</H1></CENTER>\n");
        renderFO(response);
        out.println("</BODY>\n");
        out.println("</HTML>\n");
     }
    catch (Exception e)
    {
      System.out.println ("General Failure" +e.toString());
    }      
   }

    public void renderFO(HttpServletResponse response)
     throws IOException
    {
      try {
        FileInputStream stream = new FileInputStream("cbpbp-background-color4.fo");
        InputSource inputSource = new InputSource(stream);
        ByteArrayOutputStream outPDF = new ByteArrayOutputStream();
        response.setContentType("application/pdf");
       
          Driver driver = new Driver(inputSource, outPDF);
          driver.setRenderer(Driver.RENDER_PDF);
          driver.setOutputStream(outPDF);
          driver.run();

          byte[] content = outPDF.toByteArray();
          response.setContentLength(content.length);
          response.getOutputStream().write(content);
          response.getOutputStream().println("<BR><BR>");
          response.getOutputStream().println("There should be a PDF image above");
          response.flushBuffer();
          response.getOutputStream().flush();
      }     
      catch (Exception ex) {
          System.out.println(ex);
      }
    }
 }

