(3rd try...could'nt get to post this message)

Hi Andreas,

Below is the code:


// STEP 1: Transform templates to FO
StringWriter writer = new StringWriter();
StreamResult foResult = new StreamResult(writer);
HashMap foParameters = new HashMap(parameters);
foParameters.put("templateInstanceGroups", templateInstanceGroups);
transform(TRANSFORM_FO, templateInstanceGroups, editable, null,
 foParameters, 
foResult);
writer.flush();

if (SystemUtil.isDevelopmentMode() || logger.isDebugEnabled())
{

        
System.out.println("------------------------------------------------------");

        
System.out.println("------------------------------------------------------");
        System.out.println("--------------------  FO
 -----------------------------");

        
System.out.println("------------------------------------------------------");
        System.out.println(writer.toString());

        
System.out.println("------------------------------------------------------");

        
System.out.println("------------------------------------------------------");

        
System.out.println("------------------------------------------------------");

        
System.out.println("------------------------------------------------------");
}

// STEP 2: Transform FO  to Area Tree

FopFactory fopFactory = FopFactory.newInstance();

// Used to find images
fopFactory.setURIResolver(TIPResourceResolver.DEFAULT_URI_RESOLVER);

// configure foUserAgent 
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();

//Create an instance of the target renderer so the XMLRenderer can use
 its 
font setup
Renderer targetRenderer =
 foUserAgent.getRendererFactory().createRenderer
(foUserAgent, MimeConstants.MIME_PDF);

//Create the XMLRenderer to create the intermediate format (area tree
 XML)
XMLRenderer xmlRenderer = new XMLRenderer();
xmlRenderer.setUserAgent(foUserAgent);

//Tell the XMLRenderer to mimic the target renderer
xmlRenderer.mimicRenderer(targetRenderer);

//Make sure the prepared XMLRenderer is used
foUserAgent.setRendererOverride(xmlRenderer);

File areaTreeFile = new File(atFile); // area tree file
OutputStream out = new java.io.FileOutputStream(areaTreeFile);
out = new java.io.BufferedOutputStream(out);
if (out == null)
{
        throw new IllegalArgumentException("PDF production requires an 
        OutputStream for binary data, not a Writer, which is for 
        character data.");
}

Fop fop = (Fop)fopFactory.newFop(null, foUserAgent, out);

TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();

StreamSource foSource = new StreamSource(new
 StringReader(writer.toString()));
Result areaTreeResult = new SAXResult(fop.getDefaultHandler());

System.out.println("--- Start Area tree transform");
long start = System.currentTimeMillis();
transformer.transform(foSource, areaTreeResult);
long end = System.currentTimeMillis();
System.out.println("--- End Area tree transform: " + (end - start) /
 1000.0);
out.close();

// STEP 3: Transform Area Tree to Area tree with last-odd-page omr
// Get the appropriate transformer name given the transform type
String transformerName = getTransformerName(TRANSFORM_AREA_TREE);

// Read area tree

InputStream is = new FileInputStream(areaTreeFile);
Source source = new StreamSource(is);

StringWriter atWriter = new StringWriter();
StreamResult areaTreeResult1 = new StreamResult(atWriter);

// Perform the transform
TransformUtil.transform(TransformUtil.TRANSFORM_STREAM,
 transformerName, 
parameters, source, areaTreeResult1);


// STEP 4: create PDF
OutputStream out2 = ((StreamResult)result).getOutputStream();
if (out2 == null)
{
        throw new IllegalArgumentException("PDF production requires an 
        OutputStream for binary data, not a Writer, which is for character
 data.");
}
//Setup fonts and user agent
FontInfo fontInfo = new FontInfo();
FOUserAgent userAgent = fopFactory.newFOUserAgent();

AreaTreeModel treeModel = new RenderPagesModel(userAgent, 
MimeConstants.MIME_PDF, fontInfo, out2);

AreaTreeParser parser = new AreaTreeParser();

StreamSource atSource = 
new StreamSource(new StringReader(atWriter.toString()));

parser.parse(atSource, treeModel, userAgent);

treeModel.endDocument();

}
catch (FOPException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SAXException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}




Thanks
Kevin


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

Reply via email to