details: https://code.openbravo.com/erp/devel/pi/rev/42872a897da5 changeset: 28572:42872a897da5 user: Carlos Aristu <carlos.aristu <at> openbravo.com> date: Fri Feb 05 10:04:46 2016 +0100 summary: fixes issue 32110: Upgrade FOP library
details: https://code.openbravo.com/erp/devel/pi/rev/dc0fe14356ec changeset: 28573:dc0fe14356ec user: Carlos Aristu <carlos.aristu <at> openbravo.com> date: Fri Feb 05 10:05:58 2016 +0100 summary: related to issue 32110: fixes for .fo reports diffstat: legal/Licensing.txt | 3 +- lib/runtime/barcode4j-fop-ext-0.20.5-complete.jar | 0 lib/runtime/barcode4j-fop-ext-complete.jar | 0 lib/runtime/fop.jar | 0 lib/runtime/xmlgraphics-commons-1.5.jar | 0 src-core/src/org/openbravo/base/ConfigParameters.java | 16 +- src-core/src/org/openbravo/base/HttpBaseServlet.java | 89 ++++++--- src/org/openbravo/erpCommon/ad_reports/ReportPricelist.fo | 4 +- src/org/openbravo/erpCommon/ad_reports/ReportRefundSalesDimensionalAnalyses.fo | 6 +- src/org/openbravo/erpReports/RptMA_CCP_Group.fo | 4 +- src/org/openbravo/erpReports/RptMA_CCP_Measures.fo | 4 +- src/org/openbravo/erpReports/RptM_Inout.fo | 4 +- 12 files changed, 76 insertions(+), 54 deletions(-) diffs (truncated from 361 to 300 lines): diff -r 991ea0215b59 -r dc0fe14356ec legal/Licensing.txt --- a/legal/Licensing.txt Fri Feb 05 08:58:12 2016 +0100 +++ b/legal/Licensing.txt Fri Feb 05 10:05:58 2016 +0100 @@ -85,7 +85,7 @@ # avalon-framework-4.1.5.jar # axis-ant.jar # axis.jar -# barcode4j-fop-ext-0.20.5-complete.jar +# barcode4j-fop-ext-complete.jar # batik-anim.jar # batik-awt-util.jar # batik-bridge.jar @@ -119,6 +119,7 @@ # tika-core-0.9.jar # wstx-asl-3.0.2.jar # xercesImpl.jar +# xmlgraphics-commons-1.5.jar All files under Apache Software License 2.0, available at http://www.apache.org/licenses/LICENSE-2.0 diff -r 991ea0215b59 -r dc0fe14356ec lib/runtime/barcode4j-fop-ext-0.20.5-complete.jar Binary file lib/runtime/barcode4j-fop-ext-0.20.5-complete.jar has changed diff -r 991ea0215b59 -r dc0fe14356ec lib/runtime/barcode4j-fop-ext-complete.jar Binary file lib/runtime/barcode4j-fop-ext-complete.jar has changed diff -r 991ea0215b59 -r dc0fe14356ec lib/runtime/fop.jar Binary file lib/runtime/fop.jar has changed diff -r 991ea0215b59 -r dc0fe14356ec lib/runtime/xmlgraphics-commons-1.5.jar Binary file lib/runtime/xmlgraphics-commons-1.5.jar has changed diff -r 991ea0215b59 -r dc0fe14356ec src-core/src/org/openbravo/base/ConfigParameters.java --- a/src-core/src/org/openbravo/base/ConfigParameters.java Fri Feb 05 08:58:12 2016 +0100 +++ b/src-core/src/org/openbravo/base/ConfigParameters.java Fri Feb 05 10:05:58 2016 +0100 @@ -1,6 +1,6 @@ /* ************************************************************************************ - * Copyright (C) 2001-2015 Openbravo S.L.U. + * Copyright (C) 2001-2016 Openbravo S.L.U. * Licensed under the Apache Software License version 2.0 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed @@ -24,8 +24,6 @@ import javax.servlet.ServletContext; -import org.apache.avalon.framework.logger.Log4JLogger; -import org.apache.fop.messaging.MessageHandler; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; @@ -59,7 +57,6 @@ private static final Logger log4j = Logger.getLogger(ConfigParameters.class); - private Log4JLogger fopLogger; public final String strServletSinIdentificar; private final String strServletGoBack; public final String strFTPDirectory; @@ -87,7 +84,6 @@ strBaseConfigPath = getResolvedParameter(context, "BaseConfigPath"); configureLog4j(context, strBaseConfigPath); - configureFop(); log4j.debug("context: " + strContext); log4j.debug("************************prefix: " + prefix); @@ -168,12 +164,6 @@ } } - private void configureFop() { - MessageHandler.setQuiet(true); - fopLogger = new Log4JLogger(log4j); - MessageHandler.setScreenLogger(fopLogger); - } - private void configureLog4j(ServletContext context, String _strBaseConfigPath) { String file = getResolvedParameter(context, "log4j-init-file"); @@ -276,10 +266,6 @@ return prefix + "/" + strBaseConfigPath + "/Format.xml"; } - public Log4JLogger getFopLogger() { - return fopLogger; - } - public boolean havePeriodicBackgroundTime() { return periodicBackgroundTime != null; } diff -r 991ea0215b59 -r dc0fe14356ec src-core/src/org/openbravo/base/HttpBaseServlet.java --- a/src-core/src/org/openbravo/base/HttpBaseServlet.java Fri Feb 05 08:58:12 2016 +0100 +++ b/src-core/src/org/openbravo/base/HttpBaseServlet.java Fri Feb 05 10:05:58 2016 +0100 @@ -1,6 +1,6 @@ /* ************************************************************************************ - * Copyright (C) 2001-2015 Openbravo S.L.U. + * Copyright (C) 2001-2016 Openbravo S.L.U. * Licensed under the Apache Software License version 2.0 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed @@ -32,8 +32,21 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import javax.xml.transform.Result; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.sax.SAXResult; +import javax.xml.transform.stream.StreamSource; -import org.apache.fop.apps.Driver; +import org.apache.fop.apps.FOUserAgent; +import org.apache.fop.apps.Fop; +import org.apache.fop.apps.FopFactory; +import org.apache.fop.apps.FormattingResults; +import org.apache.fop.events.Event; +import org.apache.fop.events.EventFormatter; +import org.apache.fop.events.EventListener; +import org.apache.fop.events.model.EventSeverity; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.openbravo.database.ConnectionProvider; @@ -41,7 +54,6 @@ import org.openbravo.exception.NoConnectionAvailableException; import org.openbravo.exception.PoolNotFoundException; import org.openbravo.xmlEngine.XmlEngine; -import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import rmi.RenderFoI; @@ -64,6 +76,8 @@ private static String prefix = null; protected Logger log4j = Logger.getLogger(this.getClass()); + private FopFactory fopFactory; + protected ConfigParameters globalParameters; /** @@ -543,6 +557,13 @@ } + protected FopFactory getFopFactory() { + if (fopFactory == null) { + fopFactory = FopFactory.newInstance(); + } + return fopFactory; + } + /** * Renders the FO input source into a PDF file which is then written directly to OutputStream. * @@ -590,13 +611,11 @@ try { if (log4j.isDebugEnabled()) log4j.debug("Beginning of renderFO"); + FopFactory fopFactoryInstance = getFopFactory(); if (globalParameters.haveFopConfig()) { + // Take FOP Configuration using userconfig.xml file File fopFile = new File(globalParameters.getFopConfigPath()); - if (fopFile.exists()) { - @SuppressWarnings("unused") - // external implementation - org.apache.fop.apps.Options options = new org.apache.fop.apps.Options(fopFile); - } + fopFactoryInstance.setUserConfig(fopFile); } final String foTemplate = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + strFo; @@ -607,34 +626,33 @@ if (log4j.isDebugEnabled()) log4j.debug(strFo); - StringReader sr = new StringReader(foTemplate); + Source sr = new StreamSource(new StringReader(foTemplate)); if (log4j.isDebugEnabled()) log4j.debug(sr.toString()); - InputSource inputFO = new InputSource(sr); + // Configure FOP for PDF output. Define a user agent with a listener used to log information + // along the rendering the process + FOUserAgent foUserAgent = fopFactoryInstance.newFOUserAgent(); + foUserAgent.getEventBroadcaster().addEventListener(new FopEventListener()); + Fop fop = fopFactoryInstance.newFop("application/pdf", foUserAgent, out); - if (log4j.isDebugEnabled()) - log4j.debug("Beginning of driver"); + // Setup JAXP using identity transformer + TransformerFactory factory = TransformerFactory.newInstance(); + Transformer transformer = factory.newTransformer(); - Driver driver = new Driver(); - driver.setLogger(globalParameters.getFopLogger()); - driver.setRenderer(Driver.RENDER_PDF); - driver.setInputSource(inputFO); + // Resulting SAX events (the generated FO) must be piped through to FOP + Result res = new SAXResult(fop.getDefaultHandler()); - driver.setOutputStream(out); + // Start XSLT transformation and FOP processing + transformer.transform(sr, res); - if (log4j.isDebugEnabled()) - log4j.debug("driver.run()"); + if (log4j.isDebugEnabled()) { + FormattingResults foResults = fop.getResults(); + log4j.debug("Generated " + foResults.getPageCount() + " pages in total."); + log4j.debug("End of renderFO"); + } - driver.run(); - - if (log4j.isDebugEnabled()) - log4j.debug("End of renderFO"); - - sr.close(); - driver.reset(); - driver = null; } else { RenderFoI render = (RenderFoI) Naming.lookup("rmi://" @@ -713,4 +731,21 @@ return "This servlet adds some functions (connection to the database, xmlEngine, logging) over HttpServlet"; } + private class FopEventListener implements EventListener { + + public void processEvent(Event event) { + String msg = EventFormatter.format(event); + EventSeverity severity = event.getSeverity(); + if (severity == EventSeverity.INFO) { + log4j.info(msg); + } else if (severity == EventSeverity.WARN) { + log4j.warn(msg); + } else if (severity == EventSeverity.ERROR) { + log4j.error(msg); + } else if (severity == EventSeverity.FATAL) { + log4j.error(msg); + } + } + } + } diff -r 991ea0215b59 -r dc0fe14356ec src/org/openbravo/erpCommon/ad_reports/ReportPricelist.fo --- a/src/org/openbravo/erpCommon/ad_reports/ReportPricelist.fo Fri Feb 05 08:58:12 2016 +0100 +++ b/src/org/openbravo/erpCommon/ad_reports/ReportPricelist.fo Fri Feb 05 10:05:58 2016 +0100 @@ -12,7 +12,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2001-2010 Openbravo SLU + * All portions are Copyright (C) 2001-2016 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -28,7 +28,7 @@ <fo:block text-align="center" font-weight="bold" font-size="11pt"> </fo:block> <fo:block text-align="center" font-weight="bold" font-size="20pt">SALE ORDER REPORT</fo:block> <fo:block text-align="center" font-weight="bold" font-size="11pt" id="fieldValid"/> - <fo:table space-before.optimum="20pt"> + <fo:table table-layout="fixed" width="100%" space-before.optimum="20pt"> <fo:table-column column-width="24mm"/> <fo:table-column column-width="90mm"/> <fo:table-column column-width="24mm"/> diff -r 991ea0215b59 -r dc0fe14356ec src/org/openbravo/erpCommon/ad_reports/ReportRefundSalesDimensionalAnalyses.fo --- a/src/org/openbravo/erpCommon/ad_reports/ReportRefundSalesDimensionalAnalyses.fo Fri Feb 05 08:58:12 2016 +0100 +++ b/src/org/openbravo/erpCommon/ad_reports/ReportRefundSalesDimensionalAnalyses.fo Fri Feb 05 10:05:58 2016 +0100 @@ -12,7 +12,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2001-2010 Openbravo SLU + * All portions are Copyright (C) 2001-2016 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -20,12 +20,12 @@ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="first" page-height="21cm" page-width="29.7cm" margin-top="1cm" margin-bottom="0.25cm" margin-left="0.5cm" margin-right="0.5cm"> + <fo:region-body margin-top="2cm"/> <fo:region-before extent="2cm"/> - <fo:region-body margin-top="2cm"/> </fo:simple-page-master> <fo:simple-page-master master-name="rest" page-height="21cm" page-width="29.7cm" margin-top="1cm" margin-bottom="0.25cm" margin-left="0.5cm" margin-right="0.5cm"> + <fo:region-body margin-top="2cm"/> <fo:region-before extent="2cm"/> - <fo:region-body margin-top="2cm"/> </fo:simple-page-master> <fo:page-sequence-master master-name="basicPSM"> <fo:repeatable-page-master-alternatives> diff -r 991ea0215b59 -r dc0fe14356ec src/org/openbravo/erpReports/RptMA_CCP_Group.fo --- a/src/org/openbravo/erpReports/RptMA_CCP_Group.fo Fri Feb 05 08:58:12 2016 +0100 +++ b/src/org/openbravo/erpReports/RptMA_CCP_Group.fo Fri Feb 05 10:05:58 2016 +0100 @@ -12,7 +12,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits