org.apache.fop.servlet

## Class FopServlet

- java.lang.Object
- - jakarta.servlet.GenericServlet
  - - jakarta.servlet.http.HttpServlet
    - - org.apache.fop.servlet.FopServlet

- All Implemented Interfaces:
    jakarta.servlet.Servlet, jakarta.servlet.ServletConfig, Serializable
  Direct Known Subclasses:
    FopPrintServlet

      public class FopServlet
      extends jakarta.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:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static String` | `FO_REQUEST_PARAM` Name of the parameter used for the XSL-FO file
    `protected FopFactory` | `fopFactory` The FopFactory used to create Fop instances
    `protected TransformerFactory` | `transFactory` The TransformerFactory used to create Transformer instances
    `protected URIResolver` | `uriResolver` URIResolver for use by this servlet
    `protected static String` | `XML_REQUEST_PARAM` Name of the parameter used for the XML file
    `protected static String` | `XSLT_REQUEST_PARAM` Name of the parameter used for the XSLT file

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FopServlet()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.
    `protected Source` | `convertString2Source(String param)` Converts a String parameter to a JAXP Source object.
    `void` | `doGet(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)`
    `protected FOUserAgent` | `getFOUserAgent()`
    `void` | `init()`
    `protected void` | `render(Source src, Transformer transformer, jakarta.servlet.http.HttpServletResponse response)` Renders an input file (XML or XSL-FO) into a PDF file.
    `protected void` | `renderFO(String fo, jakarta.servlet.http.HttpServletResponse response)` Renders an XSL-FO file into a PDF file.
    `protected void` | `renderXML(String xml, String xslt, jakarta.servlet.http.HttpServletResponse response)` Renders an XML file into a PDF file by applying a stylesheet that converts the XML to XSL-FO.

    - ### Methods inherited from class jakarta.servlet.http.HttpServlet

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

    - ### Methods inherited from class jakarta.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 Detail

    - #### FO_REQUEST_PARAM

          protected static final String FO_REQUEST_PARAM

      Name of the parameter used for the XSL-FO file
      See Also:
        Constant Field Values

    - #### XML_REQUEST_PARAM

          protected static final String XML_REQUEST_PARAM

      Name of the parameter used for the XML file
      See Also:
        Constant Field Values

    - #### XSLT_REQUEST_PARAM

          protected static final String XSLT_REQUEST_PARAM

      Name of the parameter used for the XSLT file
      See Also:
        Constant Field Values

    - #### 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 Detail

    - #### FopServlet

          public FopServlet()

  - ### Method Detail

    - #### init

          public void init()
                    throws jakarta.servlet.ServletException

      Overrides:
        `init` in class `jakarta.servlet.GenericServlet`
      Throws:
        `jakarta.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(jakarta.servlet.http.HttpServletRequest request,
                            jakarta.servlet.http.HttpServletResponse response)
                     throws jakarta.servlet.ServletException

      Overrides:
        `doGet` in class `jakarta.servlet.http.HttpServlet`
      Throws:
        `jakarta.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

    - #### renderFO

          protected void renderFO(String fo,
                                  jakarta.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,
                                   jakarta.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,
                                jakarta.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

Copyright © 2025 Apache Software Foundation. All rights reserved.