gmazza 2004/07/11 15:55:09 Modified: src/java/org/apache/fop/servlet FopPrintServlet.java Log: Moved FOPPrintServlet from using XSLTInputHandler to JAXP. Revision Changes Path 1.14 +31 -10 xml-fop/src/java/org/apache/fop/servlet/FopPrintServlet.java Index: FopPrintServlet.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/servlet/FopPrintServlet.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- FopPrintServlet.java 25 Jun 2004 23:35:00 -0000 1.13 +++ FopPrintServlet.java 11 Jul 2004 22:55:08 -0000 1.14 @@ -22,18 +22,30 @@ import java.io.InputStream; import java.io.PrintWriter; +// JAXP import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; +import javax.xml.transform.Result; +import javax.xml.transform.Source; +import javax.xml.transform.sax.SAXResult; +import javax.xml.transform.stream.StreamSource; +// XML import org.apache.commons.logging.impl.SimpleLog; import org.apache.commons.logging.Log; import org.apache.fop.apps.Driver; -import org.apache.fop.apps.XSLTInputHandler; import org.xml.sax.InputSource; +//Java +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; + + /** * Example servlet to generate a fop printout from a servlet. * Printing goes to the default printer on host where the servlet executes. @@ -55,7 +67,6 @@ * @version $Id$ * (todo) Doesn't work since there's no AWTRenderer at the moment. Revisit when * available. - * (todo) Don't use XSLTInputHandler anymore * (todo) Ev. add caching mechanism for Templates objects */ public class FopPrintServlet extends HttpServlet { @@ -101,10 +112,7 @@ InputStream file = new java.io.FileInputStream(foParam); renderFO(new InputSource(file), response); } else if ((xmlParam != null) && (xsltParam != null)) { - XSLTInputHandler input = - new XSLTInputHandler(new File(xmlParam), - new File(xsltParam), null); - renderXML(input, response); + renderXML(new File(xmlParam), new File(xsltParam), response); } else { response.setContentType("text/html"); @@ -142,16 +150,29 @@ /** * Renders an FO generated using an XML and a stylesheet to the default printer. - * @param input XSLTInputHandler to use - * @param response Response to write to + * @param xmlfile XML file object + * @param xsltfile XSLT stylesheet + * @param response HTTP response object * @throws ServletException In case of a problem */ - public void renderXML(XSLTInputHandler input, + public void renderXML(File xmlfile, File xsltfile, HttpServletResponse response) throws ServletException { try { Driver driver = new Driver(); driver.setRenderer(Driver.RENDER_PRINT); - driver.render(input.getParser(), input.getInputSource()); + + // Setup XSLT + TransformerFactory factory = TransformerFactory.newInstance(); + Transformer transformer = factory.newTransformer(new StreamSource(xsltfile)); + + // Setup input for XSLT transformation + Source src = new StreamSource(xmlfile); + + // Resulting SAX events (the generated FO) must be piped through to FOP + Result res = new SAXResult(driver.getContentHandler()); + + // Start XSLT transformation and FOP processing + transformer.transform(src, res); reportOK (response); } catch (Exception ex) {
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]