keiron 01/09/25 01:32:58 Modified: docs/examples/embedding FopServlet.java fop.war Log: updated servlet to reflect changes to fop Revision Changes Path 1.4 +53 -9 xml-fop/docs/examples/embedding/FopServlet.java Index: FopServlet.java =================================================================== RCS file: /home/cvs/xml-fop/docs/examples/embedding/FopServlet.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- FopServlet.java 2001/08/10 07:50:22 1.3 +++ FopServlet.java 2001/09/25 08:32:58 1.4 @@ -1,12 +1,10 @@ /* - * $Id: FopServlet.java,v 1.3 2001/08/10 07:50:22 keiron Exp $ + * $Id: FopServlet.java,v 1.4 2001/09/25 08:32:58 keiron Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. */ -package org.apache.fop.tools.servlet; - import java.io.*; import javax.servlet.*; @@ -17,7 +15,9 @@ import org.apache.fop.apps.Driver; import org.apache.fop.apps.Version; +import org.apache.fop.apps.XSLTInputHandler; +import org.apache.log.*; /** * Example servlet to generate a PDF from a servlet. @@ -26,23 +26,45 @@ * <li>fo: the path to a formatting object file to render * </ul> * - * Example URL: http://servername/servlet/FopServlet?fo=/home/fop/example/readme.fo + * Example URL: http://servername/servlet/FopServlet?fo=readme.fo + * Example URL: http://servername/servlet/FopServlet?xml=data.xml&xsl=format.xsl * Compiling: you will need * - servlet_2_2.jar * - fop.jar * - sax api + * - logkit jar + * + * Running: you will need in the WEB-INF/lib/ directory: + * - fop.jar + * - batik.jar + * - avalon-framework-4.0.jar + * - logkit-1.0b4.jar + * - xalan-2.0.0.jar */ - public class FopServlet extends HttpServlet { public static final String FO_REQUEST_PARAM = "fo"; + public static final String XML_REQUEST_PARAM = "xml"; + public static final String XSL_REQUEST_PARAM = "xsl"; + Logger log = null; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { + if(log == null) { + Hierarchy hierarchy = Hierarchy.getDefaultHierarchy(); + log = hierarchy.getLoggerFor("fop"); + log.setPriority(Priority.WARN); + } try { - if (request.getParameter(FO_REQUEST_PARAM) != null) { - FileInputStream file = new FileInputStream( - request.getParameter(FO_REQUEST_PARAM)); + String foParam = request.getParameter(FO_REQUEST_PARAM); + String xmlParam = request.getParameter(XML_REQUEST_PARAM); + String xslParam = request.getParameter(XSL_REQUEST_PARAM); + + if (foParam != null) { + FileInputStream file = new FileInputStream(foParam); renderFO(new InputSource(file), response); + } else if((xmlParam != null) && (xslParam != null)) { + XSLTInputHandler input = new XSLTInputHandler(new File(xmlParam), new File(xslParam)); + renderXML(input, response); } else { PrintWriter out = response.getWriter(); out.println("<html><head><title>Error</title></head>\n"+ @@ -69,17 +91,39 @@ response.setContentType("application/pdf"); Driver driver = new Driver(foFile, out); + driver.setLogger(log); + driver.setRenderer(Driver.RENDER_PDF); driver.run(); byte[] content = out.toByteArray(); response.setContentLength(content.length); response.getOutputStream().write(content); response.getOutputStream().flush(); - } catch (Exception ex) { throw new ServletException(ex); } + } + + public void renderXML(XSLTInputHandler input, + HttpServletResponse response) throws ServletException { + try { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + response.setContentType("application/pdf"); + Driver driver = new Driver(); + driver.setLogger(log); + driver.setRenderer(Driver.RENDER_PDF); + driver.setOutputStream(out); + driver.render(input.getParser(), input.getInputSource()); + + byte[] content = out.toByteArray(); + response.setContentLength(content.length); + response.getOutputStream().write(content); + response.getOutputStream().flush(); + } catch (Exception ex) { + throw new ServletException(ex); + } } /** 1.2 +19 -34 xml-fop/docs/examples/embedding/fop.war <<Binary file>> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]