Class FopServlet

java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
org.apache.fop.servlet.FopServlet
All Implemented Interfaces:
Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig
Direct Known Subclasses:
FopPrintServlet

public class FopServlet extends javax.servlet.http.HttpServlet
Example servlet to generate a PDF from a servlet.
Servlet param is:
  • fo: the path to a XSL-FO file to render
or
  • xml: the path to an XML file to render
  • xslt: the path to an XSLT file that can transform the above XML to XSL-FO

Example URL: http://servername/fop/servlet/FopServlet?fo=readme.fo
Example URL: http://servername/fop/servlet/FopServlet?xml=data.xml
For this to work with Internet Explorer, you might need to append "ext=.pdf" to the URL. (todo) Ev. add caching mechanism for Templates objects
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final String
    Name of the parameter used for the XSL-FO file
    protected FopFactory
    The FopFactory used to create Fop instances
    private static final long
     
    The TransformerFactory used to create Transformer instances
    protected URIResolver
    URIResolver for use by this servlet
    protected static final String
    Name of the parameter used for the XML file
    protected static final String
    Name of the parameter used for the XSLT file
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    This method is called right after the FopFactory is instantiated and can be overridden by subclasses to perform additional configuration.
    protected Source
    Converts a String parameter to a JAXP Source object.
    void
    doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
    protected FOUserAgent
     
    void
    protected void
    render(Source src, Transformer transformer, javax.servlet.http.HttpServletResponse response)
    Renders an input file (XML or XSL-FO) into a PDF file.
    protected void
    renderFO(String fo, javax.servlet.http.HttpServletResponse response)
    Renders an XSL-FO file into a PDF file.
    protected void
    renderXML(String xml, String xslt, javax.servlet.http.HttpServletResponse response)
    Renders an XML file into a PDF file by applying a stylesheet that converts the XML to XSL-FO.
    private void
    sendPDF(byte[] content, javax.servlet.http.HttpServletResponse response)
     

    Methods inherited from class javax.servlet.http.HttpServlet

    doDelete, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service, service

    Methods inherited from class javax.servlet.GenericServlet

    destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • FO_REQUEST_PARAM

      protected static final String FO_REQUEST_PARAM
      Name of the parameter used for the XSL-FO file
      See Also:
    • XML_REQUEST_PARAM

      protected static final String XML_REQUEST_PARAM
      Name of the parameter used for the XML file
      See Also:
    • XSLT_REQUEST_PARAM

      protected static final String XSLT_REQUEST_PARAM
      Name of the parameter used for the XSLT file
      See Also:
    • transFactory

      protected TransformerFactory transFactory
      The TransformerFactory used to create Transformer instances
    • fopFactory

      protected FopFactory fopFactory
      The FopFactory used to create Fop instances
    • uriResolver

      protected transient URIResolver uriResolver
      URIResolver for use by this servlet
  • Constructor Details

    • FopServlet

      public FopServlet()
  • Method Details

    • init

      public void init() throws javax.servlet.ServletException
      Overrides:
      init in class javax.servlet.GenericServlet
      Throws:
      javax.servlet.ServletException
    • configureFopFactory

      protected void configureFopFactory(FopFactoryBuilder builder)
      This method is called right after the FopFactory is instantiated and can be overridden by subclasses to perform additional configuration.
    • doGet

      public void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException
      Overrides:
      doGet in class javax.servlet.http.HttpServlet
      Throws:
      javax.servlet.ServletException
    • convertString2Source

      protected Source convertString2Source(String param)
      Converts a String parameter to a JAXP Source object.
      Parameters:
      param - a String parameter
      Returns:
      Source the generated Source object
    • sendPDF

      private void sendPDF(byte[] content, javax.servlet.http.HttpServletResponse response) throws IOException
      Throws:
      IOException
    • renderFO

      protected void renderFO(String fo, javax.servlet.http.HttpServletResponse response) throws FOPException, TransformerException, IOException
      Renders an XSL-FO file into a PDF file. The PDF is written to a byte array that is returned as the method's result.
      Parameters:
      fo - the XSL-FO file
      response - HTTP response object
      Throws:
      FOPException - If an error occurs during the rendering of the XSL-FO
      TransformerException - If an error occurs while parsing the input file
      IOException - In case of an I/O problem
    • renderXML

      protected void renderXML(String xml, String xslt, javax.servlet.http.HttpServletResponse response) throws FOPException, TransformerException, IOException
      Renders an XML file into a PDF file by applying a stylesheet that converts the XML to XSL-FO. The PDF is written to a byte array that is returned as the method's result.
      Parameters:
      xml - the XML file
      xslt - the XSLT file
      response - HTTP response object
      Throws:
      FOPException - If an error occurs during the rendering of the XSL-FO
      TransformerException - If an error occurs during XSL transformation
      IOException - In case of an I/O problem
    • render

      protected void render(Source src, Transformer transformer, javax.servlet.http.HttpServletResponse response) throws FOPException, TransformerException, IOException
      Renders an input file (XML or XSL-FO) into a PDF file. It uses the JAXP transformer given to optionally transform the input document to XSL-FO. The transformer may be an identity transformer in which case the input must already be XSL-FO. The PDF is written to a byte array that is returned as the method's result.
      Parameters:
      src - Input XML or XSL-FO
      transformer - Transformer to use for optional transformation
      response - HTTP response object
      Throws:
      FOPException - If an error occurs during the rendering of the XSL-FO
      TransformerException - If an error occurs during XSL transformation
      IOException - In case of an I/O problem
    • getFOUserAgent

      protected FOUserAgent getFOUserAgent()
      Returns:
      a new FOUserAgent for FOP