Browse Source

updated servlet to reflect changes to fop


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194481 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-0_20_3
Keiron Liddle 23 years ago
parent
commit
cc10c67344
2 changed files with 52 additions and 8 deletions
  1. 52
    8
      docs/examples/embedding/FopServlet.java
  2. BIN
      docs/examples/embedding/fop.war

+ 52
- 8
docs/examples/embedding/FopServlet.java View File

@@ -5,8 +5,6 @@
* LICENSE file included with these sources.
*/

package org.apache.fop.tools.servlet;

import java.io.*;

import javax.servlet.*;
@@ -17,7 +15,9 @@ import org.xml.sax.XMLReader;

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 @@ import org.apache.fop.apps.Version;
* <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 @@ public class FopServlet extends HttpServlet {
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);
}
}

/**

BIN
docs/examples/embedding/fop.war View File


Loading…
Cancel
Save