org.apache.fop.servlet

## Class FopServlet

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

- All Implemented Interfaces:
    java.io.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:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.lang.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 javax.xml.transform.TransformerFactory` | `transFactory` The TransformerFactory used to create Transformer instances
    `protected javax.xml.transform.URIResolver` | `uriResolver` URIResolver for use by this servlet
    `protected static java.lang.String` | `XML_REQUEST_PARAM` Name of the parameter used for the XML file
    `protected static java.lang.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 javax.xml.transform.Source` | `convertString2Source(java.lang.String param)` Converts a String parameter to a JAXP Source object.
    `void` | `doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`
    `protected FOUserAgent` | `getFOUserAgent()`
    `void` | `init()`
    `protected void` | `render(javax.xml.transform.Source src, javax.xml.transform.Transformer transformer, javax.servlet.http.HttpServletResponse response)` Renders an input file (XML or XSL-FO) into a PDF file.
    `protected void` | `renderFO(java.lang.String fo, javax.servlet.http.HttpServletResponse response)` Renders an XSL-FO file into a PDF file.
    `protected void` | `renderXML(java.lang.String xml, java.lang.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.

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

      `doDelete, 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 Detail

    - #### FO_REQUEST_PARAM

          protected static final java.lang.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 java.lang.String XML_REQUEST_PARAM

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

    - #### XSLT_REQUEST_PARAM

          protected static final java.lang.String XSLT_REQUEST_PARAM

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

    - #### transFactory

          protected javax.xml.transform.TransformerFactory transFactory

      The TransformerFactory used to create Transformer instances

    - #### fopFactory

          protected FopFactory fopFactory

      The FopFactory used to create Fop instances

    - #### uriResolver

          protected transient javax.xml.transform.URIResolver uriResolver

      URIResolver for use by this servlet

  - ### Constructor Detail

    - #### FopServlet

          public FopServlet()

  - ### Method Detail

    - #### 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 javax.xml.transform.Source convertString2Source(java.lang.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(java.lang.String fo,
                                  javax.servlet.http.HttpServletResponse response)
                           throws FOPException,
                                  javax.xml.transform.TransformerException,
                                  java.io.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
        `javax.xml.transform.TransformerException` - If an error occurs while parsing the input file
        `java.io.IOException` - In case of an I/O problem

    - #### renderXML

          protected void renderXML(java.lang.String xml,
                                   java.lang.String xslt,
                                   javax.servlet.http.HttpServletResponse response)
                            throws FOPException,
                                   javax.xml.transform.TransformerException,
                                   java.io.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
        `javax.xml.transform.TransformerException` - If an error occurs during XSL transformation
        `java.io.IOException` - In case of an I/O problem

    - #### render

          protected void render(javax.xml.transform.Source src,
                                javax.xml.transform.Transformer transformer,
                                javax.servlet.http.HttpServletResponse response)
                         throws FOPException,
                                javax.xml.transform.TransformerException,
                                java.io.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
        `javax.xml.transform.TransformerException` - If an error occurs during XSL transformation
        `java.io.IOException` - In case of an I/O problem

    - #### getFOUserAgent

          protected FOUserAgent getFOUserAgent()

      Returns:
        a new FOUserAgent for FOP

Copyright 1999-2022 The Apache Software Foundation. All Rights Reserved.