|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.faceless.report.PDFFilter
public class PDFFilter
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.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 |
---|
public PDFFilter()
Method Detail |
---|
public void init(FilterConfig config) throws ServletException
init
in interface Filter
ServletException
public void destroy()
destroy
in interface Filter
public FilterConfig getFilterConfig()
public void setFilterConfig(FilterConfig conf)
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException
doFilter
in interface Filter
ServletException
IOException
public void metaTag(HttpServletRequest reader, HttpServletResponse writer, String name, String value) throws ServletException, IOException
HTTP-
, as well as
Servlet-FileName
.
request
- the Servlet requestresponse
- the Servlet requestname
- the "name" attribute from the meta tagvalue
- the "value" attribute from the meta tag
ServletException
IOException
public void warning(SAXParseException exception) throws SAXException
warning
in interface ErrorHandler
SAXException
public void error(SAXParseException exception) throws SAXException
error
in interface ErrorHandler
SAXException
public void fatalError(SAXParseException exception) throws SAXException
fatalError
in interface ErrorHandler
SAXException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |