Two problem with this approach.  First, you are using a lot of memory to
store
intermediate XML result in a string buffer.  Second, you have to parse that
XML
again (FOP will do it for you, but it takes time).  A better solution, as I
already
said before, is to register FOP as a receiver of SAX events fired by XALAN
on the first transformation - this was you eliminate both problems and do
all
your work in one pass.  Just create a Transformer from the stylesheet and do

 // 3. Create FOP driver and set rendering mode and output stream
 org.apache.fop.apps.Driver driver = new org.apache.fop.apps.Driver();
 driver.setRenderer(driver.RENDER_PDF);
 driver.setOutputStream( <whatever you writing to> );

 // 4. Create SAXResult based on FOP Driver content handler which 
 // will accept SAX events and build FOP tree
 javax.xml.transform.sax.SAXResult saxResult =
   new javax.xml.transform.sax.SAXResult( driver.getContentHandler() );

 // 5. 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
 transformer.transform( <whatever XML source you have>, saxResult );


YS
-----Original Message-----
From: Semprini Davide [mailto:[EMAIL PROTECTED]]
Sent: Monday, September 24, 2001 9:42 AM
To: [EMAIL PROTECTED]
Subject: Re: FOP WARNING


Okay,

The example that I give is only to explain
that you can perform the PDF in two distinc phase
1) perform a trasformation 
2) use driver

You can use the "tranform method" 
with input like Dynamic xml (Dom Document) or urlXML  
and getting out a fo (Dom Document) or Writer object
YOU HAVE A LOT OF TRANSFORM TO USE!!!!!!
YOU HAVE TO SEE THE APIDOC FOR THE
COMPLETE DOCUMENTATION!!!!

For example in my project I use
xalan transform and with some
conversion I use the Fop driver
and my XML is dynamic.
WITH Transformer XALAN: 
StringWriter SstringWriter = new StringWriter();
/* this is the fo file */
 StreamResult SstreamResult = new StreamResult(SstringWriter);

transformer.transform(SstreamSourceXML, SstreamResult)

/* convert the fo file in a right format for driver
 ByteArrayOutputStream outPDF = new ByteArrayOutputStream();
 SResult = SstringWriter.toString();               
 ByteArrayInputStream str = new ByteArrayInputStream(SResult.getBytes());

 Driver driver = new Driver(new InputSource(str), outPDF);


Is this performance????? I think yes!!

Bye
  

Amit wrote:

Looking at your code I am guessing that you wrote the fo file out to the
filesystem and then used the driver to convert it to PDF...how is
performance on that? 
Instead of writing the file out to the file system did you try converting
into some sorta stream and use the driver?? 
thanks for your help 
Amit 
Semprini Davide wrote: 
Hi, 
I have had the same problem!!!!!!!! 
Nobody give me a response! 
This code in FOP Home page don't work (for me!) !!!!! 
Driver driver = new Driver();  driver.setRenderer(Driver.RENDER_PDF);
InputHandler inputHandler = new XSLTInputHandler(xmlFile, xslFile);
XMLReader parser = inputHandler.getParser();  driver.setOutputStream(new
FileOutputStream(outFile));  driver.render(parser,
inputHandler.getInputSource());

I have solved the problem using 2 phase: 
1) generate the transformation using XSLTrasform, Xalan1Transform etc...
(you can choose) 
code: 
XSLTransform traXSLT = new XSLTransform(); 
traXSLT.transform(urlXML, urlXSL, urlFoFile); 
You can choose 4 transform type (see the api documentation) 
2) Apply the result at the driver 
FileInputStream file = new FileInputStream(urlFoFile); 
    response.setContentType("application/pdf"); 
    Driver driver = new Driver(new InputSource(file), out); 
    driver.setRenderer(Driver.RENDER_PDF); 
    driver.run(); 
    byte[] content = out.toByteArray(); 
    response.setContentLength(content.length); 
    response.getOutputStream().write(content); 
    response.getOutputStream().flush(); 
THIS CODE WORK FINE!!! 
Bye 
  
  
Amit wrote: 
I am trying to generate PDFs using FOP-0.20.1. The input files are xmland
xsl filesI am using JRun3.0 with java1.2.2Here is the error I getWARNING:
Unknown formatting object ^rootAnybody any
ideas?---------------------------------------------------------------------T
o unsubscribe, e-mail: [EMAIL PROTECTED] additional
commands, email: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to