1 25 package org.ofbiz.webapp.view; 26 27 import java.io.ByteArrayOutputStream ; 28 import java.io.Writer ; 29 30 import org.apache.avalon.framework.logger.Logger; 31 import org.apache.avalon.framework.logger.Log4JLogger; 32 import org.apache.fop.messaging.MessageHandler; 33 import org.apache.fop.apps.Driver; 34 import org.apache.fop.tools.DocumentInputSource; 35 import org.apache.fop.image.FopImageFactory; 36 import org.w3c.dom.Document ; 37 import org.xml.sax.InputSource ; 38 39 import org.ofbiz.base.util.Debug; 40 import org.ofbiz.base.util.UtilXml; 41 import org.ofbiz.base.util.GeneralException; 42 43 50 public class FopRenderer { 51 52 public static final String module = FopRenderer.class.getName(); 53 54 public static ByteArrayOutputStream render(Writer writer) throws GeneralException { 55 Logger logger = new Log4JLogger(Debug.getLogger(module)); 57 MessageHandler.setScreenLogger(logger); 58 59 Driver driver = new Driver(); 61 driver.setRenderer(Driver.RENDER_PDF); 62 driver.setLogger(logger); 63 64 74 75 Document xslfo = null; 77 try { 78 xslfo = UtilXml.readXmlDocument(writer.toString()); 79 } catch (Throwable t) { 80 throw new GeneralException("Problems reading the parsed content to XML Document", t); 81 } 82 83 ByteArrayOutputStream out = new ByteArrayOutputStream (); 85 driver.setOutputStream(out); 86 87 InputSource is = new DocumentInputSource(xslfo); 89 driver.setInputSource(is); 90 try { 91 driver.run(); 92 FopImageFactory.resetCache(); 93 } catch (Throwable t) { 94 throw new GeneralException("Unable to generate PDF from XSL-FO", t); 95 } 96 97 return out; 98 } 99 100 } 101 | Popular Tags |