xmlgraphics-fop-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ian Hendry <ianhen...@yahoo.com>
Subject second run causes error
Date Tue, 17 Apr 2007 13:16:58 GMT
Hi,

I have implemented FOP on an tomcat 5 servlet. The XML data is read from Oracle 10g to a java.lang.String
and then mixed with XSLT from the file system to produce the PDF. Once I start the tomcat
server and run the servlet all is good and the PDF is produced correctly. When I run the servlet
again I get a "File does not begin with '%PDF-" error. This error repeats until I restart
the tomcat server. The error in the tomcat log is

[INFO] ERROR: The processing instruction target matching "[xX][mM][lL]" is not allowed.

I've research this error and it points to white space before the 

<?xml version="1.0" encoding="UTF-8">

line in the XML but this seems not to be the case.

Any ideas where to look next??

Thanks in advance, Ian.


            ByteArrayOutputStream out = new ByteArrayOutputStream();
            
            org.apache.fop.configuration.Configuration.put("baseDir",
                    "C:\\Program Files\\Apache Software Foundation\\Tomcat 5.0\\webapps\\GPS");
            
            response.setContentType("application/pdf");
            response.setHeader("Accept-Ranges", "bytes");
            
            logger.info("xslParam : " + xslParam);
            logger.info("xmlParam : " + xmlParam);            
            
            Source xslSrc = new StreamSource(new File(xslParam));
            
            //    Construct driver
            Driver driver = new Driver();
            driver.setLogger(logger);
      
            driver.setRenderer(Driver.RENDER_PDF);
            driver.setOutputStream(out);

            //Setup XSLT         
            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer(xslSrc);
            //Setup input for XSLT transformation
            Source xmlSrc = new StreamSource(new StringReader(xmlParam));
        
            //Resulting SAX events (the generated FO) must be piped through to FOP
            Result res = new SAXResult(driver.getContentHandler());

            //Start XSLT transformation and FOP processing
            transformer.transform(xmlSrc, res);

            //Send content to Browser
            response.getOutputStream().write(out.toByteArray());
            response.flushBuffer();

Mime
View raw message