org.faceless.report
Class PDFFilter

java.lang.Object
  extended by org.faceless.report.PDFFilter
All Implemented Interfaces:
Filter, ErrorHandler

public class PDFFilter
extends Object
implements Filter, ErrorHandler

The PDFFilter class is an implementation of the Servlet 2.3 Filter interface, which automatically converts an XML report into a PDF which is returned to the client. For those still using the Servlet 2.2 architecture, The PDFProxyServlet does a similar job.

More information on installing filters is available in the Servlet Specification and has probably been supplied with your Servlet engine. For the impatient, here's an example setup which would cause all requests to anything in the /pdf/ path of your website to be converted to a PDF. Add the following lines to your WEB-INF/web.xml file:

    <filter>
      <filter-name>bforeport</filter-name>
      <filter-class>org.faceless.report.PDFFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>bforeport</filter-name>
      <url-pattern>/pdf/*</url-pattern>
    </filter-mapping>
 

Meta tags that aren't already known to the Report Generator and that begin with "HTTP-" are added to the response header (minus the "HTTP-" prefix). An example would be to place <meta name="HTTP-Expires" value="Mon, 01 Jan 1999 12:00:00 GMT"> in the head of the XML, which would set the "Expires" header in the HTTP response.

The following custom Meta-Tags may also be used to control the behaviour of the servlet.

Some initialization parameters can be set in the web.xml file to further control various internal aspects of the servlet:

These last two parameters were added in version 1.1.19 to cause parts of the document to be cached to disk. This can reduce memory footprint slightly, although it may slow things down a little so you must decide whether it's appropriate or not. The cache-prefix and cache-minsize parameters are passed into the DiskCache constructor - essentially the prefix should be a temporary directory, optionally with the first half of a filename. The minsize parameter sets the minimum size a stream may be before it's considered to be worth caching to disk. For example, to store streams greater than 8k in the "/tmp/cache" directory and call them "bfo.1", "bfo.2" and so on, you could do something like this:

    <filter>
      <filter-name>bforeport</filter-name>
      <filter-class>org.faceless.report.PDFFilter</filter-class>
      <init-param>
        <param-name>cache-minsize</param-name>
        <param-value>8192</param-value>
      </init-param>
      <init-param>
        <param-name>cache-prefix</param-name>
        <param-value>/tmp/cache/bfo.</param-value>
      </init-param>
    </filter>
 

This class also implements org.xml.sax.ErrorHandler, to deal with any errors found during the XML parsing process. Currently all warnings and errors are fatal, and logged to System.err.


Constructor Summary
PDFFilter()
           
 
Method Summary
 void destroy()
           
 void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
           
 void error(SAXParseException exception)
           
 void fatalError(SAXParseException exception)
           
 FilterConfig getFilterConfig()
          Return the Filter Config.
 void init(FilterConfig config)
           
 void metaTag(HttpServletRequest reader, HttpServletResponse writer, String name, String value)
          Handle any meta tags that aren't recognised by the core Report Generator.
 void setFilterConfig(FilterConfig conf)
          Set the Filter Config.
 void warning(SAXParseException exception)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PDFFilter

public PDFFilter()
Method Detail

init

public void init(FilterConfig config)
          throws ServletException
Specified by:
init in interface Filter
Throws:
ServletException

destroy

public void destroy()
Specified by:
destroy in interface Filter

getFilterConfig

public FilterConfig getFilterConfig()
Return the Filter Config. A non-standard method required for WebLogic 6.1


setFilterConfig

public void setFilterConfig(FilterConfig conf)
Set the Filter Config. A non-standard method required for WebLogic 6.1


doFilter

public void doFilter(ServletRequest request,
                     ServletResponse response,
                     FilterChain chain)
              throws ServletException,
                     IOException
Specified by:
doFilter in interface Filter
Throws:
ServletException
IOException

metaTag

public void metaTag(HttpServletRequest reader,
                    HttpServletResponse writer,
                    String name,
                    String value)
             throws ServletException,
                    IOException
Handle any meta tags that aren't recognised by the core Report Generator. This method recognises tags begining with HTTP-, as well as Servlet-FileName.

Parameters:
request - the Servlet request
response - the Servlet request
name - the "name" attribute from the meta tag
value - the "value" attribute from the meta tag
Throws:
ServletException
IOException

warning

public void warning(SAXParseException exception)
             throws SAXException
Specified by:
warning in interface ErrorHandler
Throws:
SAXException

error

public void error(SAXParseException exception)
           throws SAXException
Specified by:
error in interface ErrorHandler
Throws:
SAXException

fatalError

public void fatalError(SAXParseException exception)
                throws SAXException
Specified by:
fatalError in interface ErrorHandler
Throws:
SAXException


Copyright © 2001-2012 Big Faceless Organization