You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-dev@xmlgraphics.apache.org by Jim Urban <ji...@netsteps.net> on 2001/11/19 20:38:13 UTC
New FOP Code Don't Work
Recently someone suggested using SAX events to run XML through XSLT then FOP
and to send the PDF back to the browser from a servlet. I tried implmenting
this (see code below) but all I don't get any output back. I even routed
the output to a file, and the file was empty. My old code worked great, but
I was told I was wasting memory. Can someone tell me why this code does not
work?
Thanks,
Jim Urban
Product Manager
Netsteps Inc.
Suite 505E
1 Pierce Pl.
Itasca, IL 60143
Voice: (630) 250-3045 x2164
Fax: (630) 250-3046
public void renderFO(Transformer pdfTransformer, Source
iInputSource, HttpServletResponse uResponse)
{
try
{
OutputStream out = uResponse.getOutputStream();
uResponse.setContentType("application/pdf");
Driver driver = new Driver();
driver.setRenderer(driver.RENDER_PDF);
driver.setOutputStream(out);
// -------
// Create SAXResult based on FOP Driver content
handler
// which will accept SAX events and build FOP tree
// -------
Result saxResult = new
SAXResult(driver.getContentHandler());
// Use the Transformer to transform an XML Source
and
// send the output to a Result object. Implicitely
it will
// create the FOP tree by firing SAX events.
pdfTransformer.transform(iInputSource, saxResult);
// The user is already viewing the PDF!
out.flush();
out.close();
}
catch (TransformerException e1)
{
System.err.println("Unable to generate PDF: " +
e1.toString());
}
catch (IOException e2)
{
System.err.println("File error: " + e2.toString());
}
}