[jdom-interest] Compression and JDOM
Laurent Bihanic
laurent.bihanic at atosorigin.com
Thu Sep 20 09:42:52 PDT 2001
David Morris wrote:
> Group,
>
> We have run into a scalability issue while creating a XSL-FO document.
> The volume of data required to describe a simple columnar report makes
> it impossible for us to use transform documents like we want. For example,
> when the JDOM tree for a 70 page report is serialized it takes about 250M.
> I am looking for suggestions on how we can reduce the size of our output
> passed to FOP, the tags, etc. are highly redundant and would seem to be
> a good candidate for compression.
>
Hi,
As you do not describe how you pass information to FOP, it's quite hard to
give an answer. But...
What you can do to reduce the size of the XSL-FO document is to use the
shortest possible prefix for XSL-FO either by making XSL-FO namespace the
default or by using a one-character prefix.
Have you considered using a SAX pipeline so that the whole process happens in
memory: JDOM -> XSL-FO -> FOP? The preferred XML input for FOP is SAX (except
for FOP 0.20.x which is has a show-stopper bug when not parsing from an XML
text stream).
Using the TrAX API to transform a JDOM document into an XSL-FO document and
FOP 0.19 to render it in PDF, your code can be as simple as:
// Allocate and configure a new driver instance.
Driver driver = new Driver();
driver.setRenderer(Driver.RENDER_PDF);
driver.setOutputStream(new BufferedOutputStream(out));
// Apply XSL Transformation redirecting the
// result to the FOP rendering engine.
getXSLTransformer(styleSheet).transform(
new JDOMSource(doc),
new SAXResult(driver.getContentHandler()));
// Render PDF document
driver.format();
driver.render();
Hope this helps,
Laurent
More information about the jdom-interest
mailing list