You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Bernard Giannetti <th...@hotmail.com> on 2011/05/02 04:53:06 UTC

Inclusing of a dynmaically generated SVG into XSL

Hi,

I have a dynamically generated SVG image (using Batik included with the FOP 
distribution) and I want to pass the SVG (say as a bytearrayoutputstream) into the render process.  The render process is typical: 

bufferedOutputStream = new BufferedOutputStream( new FileOutputStream( outputPDFFile ) );
fop = fopFactory.newFop( org.apache.xmlgraphics.util.MimeConstants.MIME_PDF, foUserAgent, bufferedOutputStream );
transformer = TransformerFactory.newInstance().newTransformer( new StreamSource( xslStylesheet ) );
source = new StreamSource( xmlData );
result = new SAXResult( fop.getDefaultHandler() );
transformer.transform( source, result );

I've found the following two articles which have given me a bit of an idea:

http://old.nabble.com/How-to-transform-embedded-FO--td31231565.html
http://old.nabble.com/Embedding-SVG-dynamically-into-fo-file-td30691616.html

but I can't seem to figure out once I have my SVG as a bytearraystream what to do with it:

SAXSource saxSource = new SAXSource( new InputSource( new ByteArrayInputStream( byteArrayOutputStream.toByteArray() ) ) );

Where do I put the saxSource?

At the other end, what tag/block do I use in the XSL file to place the SVG?  Currently I pull in an SVG file using the tag

<fo:block background-image="url('background.svg')" background-repeat="repeat" background-position-horizontal="center" background-position-vertical="center" >

which is fine for the file version...but not sure what to do for a dynamically generated version.

>From what I've read it should be possible to create an SVG on the fly and pass it into the render process...just can't join all the dots!


Thanks in advance,

Bernard.