Hi,

 

We raised a bug on the JDK for this issue.

 

Thanks

 

From: Daniel Robinson <[email protected]> 
Sent: 24 September 2025 10:59
To: [email protected]
Subject: Direct FO transform fails in Java 25

 

 

Hello,

 

Using Java25, FOP 2.11, Windows11.

 

This way be related to issue FOP-3275.

 

We directly generate FO files from the UI layer of our application. And use FOP 
to transform these into PDF files.

 

We are in the process of moving to Java 25. Since this move the transform is no 
longer working. We get the error : FWK005 parse may not be called while parsing.

 

To do this we call the transformation like this :

TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
// 5️⃣ Set up input (FO file) and output (SAXResult to FOP)
StreamSource src = new StreamSource(foFile);
SAXResult res = new SAXResult(fop.getDefaultHandler());
// 6️⃣ Transform the FO to PDF
transformer.transform(src, res);

 

However, we have found the if we wrap our FO (fopInvoice2.xml) file into an XSL 
file (fopInvoice3.xml) and use a dummy xml for the transform it works.

 

Source xslSource = new StreamSource(reader);
    String xml = """
    <doc></doc>
""";
    Source xmlSource = new StreamSource(new StringReader(xml));
    Transformer transformer = tf.newTransformer(xslSource);
    // 5) Pipe the XSLT result directly into FOP as SAX events
    Result res = new SAXResult(fop.getDefaultHandler());
    transformer.transform(xmlSource, res);

 

This approach seems couter-intuitive as adding a transformation layer reduces 
the transformation imbrication.

 

Are we doing something wrong? 

 

Kind regards,

 

Daniel

 

Reply via email to