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 ChangesPath
1.14 +31 -10xml-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 - 1.13
+++ FopPrintServlet.java 11 Jul 2004 22:55:08 - 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]