Hi, I am experiencing some a weird problem while trying to render some SVG. I have a simple java program which reads in an XML file and an XSLT stylesheet (containing some SVG) and render it out to PDF. What happens is my terminal just frezzes, and I can't kill the process or do anything else. The process only hangs when I run my application, i.e. if I run fop from the command line passing it the XSLT with the SVG, it works fine.
Here is SVG from the XSLT style sheet: <xsl:template name="DisplaySvg"> <fo:instream-foreign-object> <svg:svg xmlns:svg="http://www.w3.org/2000/svg" width = "300" height="200" viewBox="0 0 300 200" xml:space="preserve"> <svg:g style="fill:white; stroke:#000000"> <svg:line x1="0" y1="200" x2="0" y2="0"/> <svg:line x1="0" y1="200" x2="200" y2="200"/> <svg:rect x="10" y="150" width="20" height="50" style="fill:blue; stroke:#000000"/> <svg:rect x="40" y="170" width="20" height="30" style="fill:black; stroke:#000000"/> <svg:rect x="70" y="100" width="20" height="100" style="fill:green; stroke:#000000"/> <svg:rect x="100" y="20" width="20" height="180" style="fill:yellow; stroke:#000000"/> <svg:rect x="130" y="150" width="20" height="50" style="fill:red; stroke:#000000"/> </svg:g> </svg:svg> </fo:instream-foreign-object> </xsl:template> ------- The my java application which does what I explained above is: import java.io.*; // FOP libraries import org.apache.fop.apps.Driver; import org.apache.fop.apps.Version; import org.apache.fop.messaging.MessageHandler; import org.xml.sax.InputSource; import org.apache.fop.apps.FOPException; import org.apache.avalon.framework.logger.ConsoleLogger; import org.apache.avalon.framework.logger.Logger; import javax.xml.transform.*; import javax.xml.transform.stream.*; import javax.xml.transform.sax.*; class RenderingEngineXsltSvg { // number of PDFs to be generated static final int OUTPUT_SIZE = 1; static final String INPUT_XML = "statement.xml"; static final String INPUT_XSLT = "toXslFoSVG.xslt"; static final String INPUT_DIR = "../../tmp/input/"; static final String OUTPUT_DIR = "../../tmp/output/"; public static void main(String args[]) { try { // only create the Transformer which reads the XSLT once Transformer transformer = TransformerFactory.newInstance() .newTransformer(new StreamSource(INPUT_DIR + INPUT_XSLT)); for(int i = 1; i <= OUTPUT_SIZE; i++) { String fileName = INPUT_XML; int fileLength = fileName.length(); fileName = fileName.substring(0, fileLength - 4); String outFileName = OUTPUT_DIR + fileName + i + ".pdf"; Driver driver = new Driver(); driver.setOutputStream(new FileOutputStream(outFileName)); Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO); MessageHandler.setScreenLogger(logger); driver.setLogger(logger); driver.setRenderer(Driver.RENDER_PDF); transformer.transform(new StreamSource(INPUT_DIR + INPUT_XML), new SAXResult(driver.getContentHandler())); System.out.println("***** GENERATED PDF: " + i + " *****"); } } catch (javax.xml.transform.TransformerConfigurationException ex) { System.err.println("Exception: " + ex.toString()); } catch (javax.xml.transform.TransformerException ex) { System.err.println("Exception: " + ex.toString()); } catch (IOException ex) { System.err.println("IO Exception: " + ex.toString()); } // Everything is OK - exit System.exit(0); } } --- Any help would be appreciated. Regards, Ozhan ---------------------------- Ozhan Hassan Multimedia Database Systems RMIT University Email: [EMAIL PROTECTED] Phone: 9925 4118 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]