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());
		}
	}