Hello all,

I am currently rendering a legal size document to PDF with fop 0.94 that 
contains two panels of graphics. Each panel contains a single 300 dpi PNG file. 
 Additional text is rendered on the page but is very minimal.  The rendering is 
taking upwards of 4 seconds to complete on my development box (1g ram, 2.5ghz 
processor).  I've tried all optimizations I could find including the use of 
BufferedOutputStreams and usage of url's for external graphics to try to 
improve the time (hopefully to 1 to 1.5 seconds).  Nothing I've tried is making 
much of an improvement in the render time.  Does anyone have any experience 
with increasing render performance from fop?  I upgraded to fop 0.95 and 
actually saw performance drop off dramatically so I'm currently using 0.94.  
Any help with this issue would be greatly appreciated!

My rendering source code looks like the following which is the basic strategy 
proposed by apache's website:

        try {
            // Setup input and output for XSLT transformation
            Source xslSrc = new StreamSource(xslFile);

            // Create transformer.
            Transformer transformer = createTransformer(xslSrc);

            // Resulting SAX events (the generated FO) must be piped through to 
FOP
            Result res = new SAXResult(fop.getDefaultHandler());

            // Load specification into a source.
            Source src = new DOMSource(document);

            // Perform the transform.
            transformer.transform(src, res);

        } catch (FOPException e) {
                ...
        } catch (TransformerException e) {
                ...
        }


My FO document is very simple.  Below is an abridged version:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
        xmlns:fo="http://www.w3.org/1999/XSL/Format";>

        <xsl:template match="/">

                <fo:root>

                <!-- Define the page layout. -->
                    <fo:layout-master-set>

                                <fo:simple-page-master master-name="pamphlet"
                        page-height="8.5in"
                                        page-width="14.5in"
                                        margin-top="0in"
                                        margin-bottom="0in"
                                        margin-left=".1875in"
                                        margin-right="0in">
                                        <fo:region-body margin-top=".1875in"/>
                                </fo:simple-page-master>

                        </fo:layout-master-set>

                        <fo:page-sequence master-reference="pamphlet">
                                <fo:flow flow-name="xsl-region-body">
                                        <xsl:apply-templates 
select="specification/panelOneFile"/>
                                        <xsl:apply-templates 
select="specification/panelTwoFile"/>
                                </fo:flow>
                        </fo:page-sequence>

                </fo:root>

    </xsl:template>

    <!-- Panel 1 -->
    <xsl:template match="specification/panelOneFile">
        <fo:block-container height="8.2in" width="4.25in" top="0in" 
left="4.5in" padding="0mm" position="absolute">
            <fo:block>
                <fo:external-graphic top="1cm" src="{//panelOneFile}"/>
            </fo:block>
        </fo:block-container>

    <!-- Panel 2 -->
    <xsl:template match="specification/panelTwoFile">
        <fo:block-container height="8.2in" width="4.25in" top="0in" 
left="9.1in" padding="0mm" position="absolute">
            <fo:block>
                <fo:external-graphic top="1cm" src="{//panelTwoFile}"/>
            </fo:block>
        </fo:block-container>
    </xsl:template>

</xsl:stylesheet>

My xsl file is simple as well:

<?xml version="1.0" encoding="UTF-8"?>
<specification>
    <panelOneFile>url('c:/example/example1.png')</panelOneFile>
    <panelTwoFile>url('c:/example/example2.png')</panelTwoFile>
</specification>

Kevin Whittington
Store Systems Senior Programmer/Analyst
Catalina Marketing Corporation


Reply via email to