Hello,
i am trying to generate pdf on fly from dynamic xml-source adapting the
official fopservlet.java example to display it on the IE6 Browser. I am also
beginning with java.
Here goes my code, where sXSL is the Url to my stylesheet:
<snip>
InputSource xslSource = new InputSource(new URL(sXSL).openStream());
InputSource xmlSource = new InputSource (new
StringReader(sReturnString));
XSLTInputHandler input = new XSLTInputHandler(xslSource, xmlSource);
//StreamSource xmlSource = new StreamSource(new
StringReader(sReturnString));
renderXML(input, c_response);
</snip>
where renderXML is slightly different from the original
<snip>
public void renderXML(XSLTInputHandler input,
HttpServletResponse response) throws ServletException
{
try {
log("renderXML");
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.setContentType("application/pdf");
response.setHeader( "Content-disposition","inline;
filename=test.pdf" );
Driver driver = new Driver();
driver.setLogger(logPDF);
driver.setRenderer(Driver.RENDER_PDF);
driver.setOutputStream(out);
driver.render(input.getParser(), input.getInputSource());
byte[] content = out.toByteArray();
response.setContentLength(content.length);
response.getOutputStream().write(content);
response.getOutputStream().flush();
} catch (Exception ex) {
throw new ServletException(ex);
}
}
</snip>
What is wrong ?
if have also tried do it with the transformer object:
<snip>
public void generatePdf(String xml, String xslPfad, OutputStream pdfOutput)
throws Exception {
try{
c_response.setContentType("application/pdf");
c_response.setHeader( "Content-disposition","inline;
filename=test.pdf" );
Source streamSource = new StreamSource(new
URL(xslPfad).openStream());
Source saxSource = new SAXSource(new InputSource(new
StringReader(xml)));
Driver driver = new Driver();
Logger logger = new
ConsoleLogger(ConsoleLogger.LEVEL_WARN);
MessageHandler.setScreenLogger(logger);
driver.setLogger(logger);
//driver.setLogger(getLogger());
driver.setRenderer(Driver.RENDER_PDF);
driver.setOutputStream(pdfOutput);
TransformerFactory tf =
TransformerFactory.newInstance();
Transformer transformer =
tf.newTransformer(streamSource);
Result result = new
SAXResult(driver.getContentHandler());
transformer.transform(saxSource, result);
}
catch (Exception e) { }
finally{
//pdfOutput.close();
}
}
</snip>
calling this with:
<snip>
OutputStream out = new ByteArrayOutputStream();
try {
generatePdf(sReturnString, sXSL, out);
}
catch (Exception e) { }
</snip>
Thanks for your help,
Hans Braum�ller
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]