Hi Arpit, This change was intentionally done, see https://wiki.apache.org/xmlgraphics-fop/FopFactoryConfiguration <https://wiki.apache.org/xmlgraphics-fop/FopFactoryConfiguration>
The problem is that FopFactory can’t be thread safe and at the same time allow changes in configuration. In the past, FopFactory was reusable but not thread-safe. Related to “PS”, we are using FOP 2.1 in several production servers, each one rendering up to 100 documents at the same time and we don’t have any issue related to thread safety. I assume page height and width were configured in FopFactory because in XSL:FO page-height=“auto” & page-width=“auto” are defined. I suggest to define page-height & page-width at runtime, for example using an XSLT. The value for page-height & page-width could be read from an input XML document or passed as a parameter during the transformation. The following is a slightly changed code copied from https://github.com/apache/fop/blob/trunk/fop/examples/embedding/java/embedding/ExampleXML2PDF.java <https://github.com/apache/fop/blob/trunk/fop/examples/embedding/java/embedding/ExampleXML2PDF.java> (a mirror of http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop/examples/embedding/java/embedding/ExampleXML2PDF.java?view=markup <http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop/examples/embedding/java/embedding/ExampleXML2PDF.java?view=markup> ) Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out); // Setup XSLT TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(new StreamSource(xsltfile)); // Set the value of a <param> in the stylesheet transformer.setParameter(“pageHeightParam", “11.00in”); transformer.setParameter(“pageWidthParam", “8.5in"); // Setup input for XSLT transformation Source src = new StreamSource(xmlfile); // Resulting SAX events (the generated FO) must be piped through to FOP Result res = new SAXResult(fop.getDefaultHandler()); // Start XSLT transformation and FOP processing transformer.transform(src, res); Hope this helps, Alexios Giotis > On 23 Apr 2017, at 06:33, Arpit Phanda <phandaar...@gmail.com> wrote: > > Hi, > > We are migrating our service from apacheFOP-0.95 to apacheFOP-2.1. Our aim is > to configure pageHeight and pageLength to singleton instance during each > rendering call. > > In earlier version we could create FopFactory instance by calling > FopFactory.newInstance() and then use setPageHeight/setPageWidth on the same > instance of FopFactory. Currently, this is no more valid. Now, we are allowed > to set these property on FopFactoryBuilder - new > FopFactoryBuilder().setPageHeight().build() which means we are creating a new > FopFactory instance each time. Is there any way of injecting these property > on already created instance. > > PS: Also, i read a few issue where it has been said ApacheFOP is not > threadsafe and just wanted to know the reason behind it. > > > -- > Regards > Arpit Phanda