Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.faceless.report
Class PDFFilter

    java.lang.Object
      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.

- `Servlet-Filename` - ask the client browser to save the file as the specified filename instead of displaying it inline. This uses the `Content-Disposition` header, which in theory is accepted by NS4+ and IE5+, although this known bug in IE5.5 may prevent the document from being viewed at all. Use with caution unless you know your audiences browsers.

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

- `org.xml.sax.driver` - may be set to the base class of your SAX parsers `XMLReader` implementation, if the generator is unable to locate it.
- `org.faceless.report.flag.WarningUnknownTag` - may be set to `true` or `false` to generate warnings about unknown tags. Default is "true"
- `org.faceless.report.flag.WarningUnknownAttribute` - may be set to `true` or `false` to generate warnings about unknown attributes. Default is "true"
- `org.faceless.report.flag.WarningMisplacedText` - may be set to `true` or `false` to generate warnings about misplaced text. Default is "true"
- `cache-minsize` and `cache-prefix` - can be set to cache parts of the created document to disk.

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`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001-2012 Big Faceless Organization