xmlgraphics-fop-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Zahigian, Mike" <micha...@amgen.com>
Subject RE: Help to get started in a servlet
Date Wed, 06 Feb 2002 00:23:36 GMT
Here's a simple servlet that will work.  Like the FOP servlet, you give it a
fo file or an xml/xsl combination in a get parameter.  You have to have the
latest xalan and xerces in addition to fop, because I handle the xml
transformation within the servlet as opposed to using the fop methods for
transformation.  Let me know if you have any trouble.

Mike Z

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.xml.sax.InputSource;
import org.apache.fop.apps.Driver;
import javax.xml.transform.stream.*;
import javax.xml.transform.*;

public class SimpleServlet extends HttpServlet {

    private static final String FO_REQUEST_PARAM = "fo";
    private static final String XML_REQUEST_PARAM = "xml";
    private static final String XSL_REQUEST_PARAM = "xsl";

    // you might want to override init() and set up a log4j category for the
servlet so you can easily add debugging
    // code

    public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {

       try {
		   // you might want to set up a constant to represent the
directory path or pull the directory path
		   // from a configuration file, otherwise you have to
supply the path in the get parameter
            String foParam = request.getParameter(FO_REQUEST_PARAM);
            String xmlParam = request.getParameter(XML_REQUEST_PARAM);
            String xslParam = request.getParameter(XSL_REQUEST_PARAM);

            ByteArrayOutputStream out = new ByteArrayOutputStream();
            InputSource input = null;

            // set content type as pdf so browser will know it's getting pdf
content and display it properly

            if ((request.getParameter(FO_REQUEST_PARAM)) != null) {
                FileInputStream fo = new FileInputStream(foParam);
                input = new InputSource(fo);
            } else if(((request.getParameter(XML_REQUEST_PARAM)) != null) &&
((request.getParameter(XSL_REQUEST_PARAM)) != null)) {
            	File xml = new File(xmlParam);
            	File xsl = new File(xslParam);
            	Source xmlSource = new StreamSource(xml);
				Source xslSource = new StreamSource(xsl);
				StringWriter sw = new StringWriter();
				TransformerFactory tFactory =
				//create Templates so the xsl document will
function as a template and will be cached in
				//order to optimize performance
				Templates cachedXSLT =
				Transformer transformer =
				//transform the xml we've been given using
the cached xsl
				transformer.transform(xmlSource, new
				Reader r = new StringReader(sw.toString());
				input = new InputSource(r);
            } else {
				// handle situation:  get parameters are not
			if (input != null) {
				Driver driver = new Driver(input, out);

            //send content to the browser now
            byte[] content = out.toByteArray();
        } catch (Exception e) {
            // handle exceptions.

	// pass post data received to get for processing
    public void doPost(HttpServletRequest request,
			throws IOException, ServletException
			doGet(request, response);

-----Original Message-----
From: Chinn, Gale [mailto:GWChinn@cessna.textron.com]
Sent: Tuesday, February 05, 2002 7:58 AM
To: 'fop-user@xml.apache.org'
Subject: Help to get started in a servlet

I am new to fop and can get it to run command line, but would like to get it
to run in a servlet.
I have followed the info on fop's embedding page using fop.war file in the
webapps directory of Tomcat on ver 3.2 and 4, but cannot get it to work
http://localhost:8080/fop/fop?fo=... or

I would just like to get a simple pdf to come back to my browser to prove a
point to my group leader.  Any help would be appreciated


Gale Chinn
Cessna Aircraft Company
Wichita, KS

View raw message