[ 
https://issues.apache.org/jira/browse/FOP-2914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18063308#comment-18063308
 ] 

Joao Goncalves commented on FOP-2914:
-------------------------------------

[~M.] is this still an issue?

> NPE during FO 2 IF transformation with instream-foreign-object using Saxon
> --------------------------------------------------------------------------
>
>                 Key: FOP-2914
>                 URL: https://issues.apache.org/jira/browse/FOP-2914
>             Project: FOP
>          Issue Type: Bug
>         Environment: Windows 10, OpenJDK 11.0.2, Fop 2.3 (Fop 2.4)
>            Reporter: M.H.
>            Priority: Major
>
> So far, we used Xalan (2.7.2) as the XSLT Processor to transform our XML/XSL 
> to FO and further to IF (intermediate format) to concat these to one file 
> that is finally rendered to PDF (to avoid multiple fonts via PDF 
> concatenation). We now have a current version of a 3rd party library that 
> breaks our app because of Xalan  (known bug: 
> [https://stackoverflow.com/questions/45152707/transformerfactory-and-xalan-dependency-conflict])
>  . So we investigated a lot of time, adjusted our XMl APIs, converted to 
> JAXB, removed Xalan and werent able to use the JDK 11 internal XSLT processor 
> because our (hundreds of) XSLTs don't work anymore because they only seem to 
> work with a "lazy" XSLT processor like Xalan. For this reason, we evaluate 
> the Saxon XSLT processor. With *Saxon*, most things work again except one bug:
> We (have to) include SVG files with instream-foreign-object:
> {code:xml}
> <fo:instream-foreign-object>
>   <svg:svg xmlns="http://www.w3.org/2000/svg"; 
> xmlns:xlink="http://www.w3.org/1999/xlink"; width="120mm" height="120mm" >
>     <svg:image xmlns:xlink="http://www.w3.org/1999/xlink"; 
> xlink:href="Test.svg" width="120mm" height="120mm"/>
>   </svg:svg>
> </fo:instream-foreign-object>
> {code}
> And during the transformation of the FO to Apaches intermediate format IF, a 
> NullPointerException occurs:
> {code:java}
> Error while rendering page 1. Reason: java.lang.NullPointerException     at 
> org.apache.fop.events.EventExceptionManager.throwException(EventExceptionManager.java:74)
>      at 
> org.apache.fop.events.DefaultEventBroadcaster$1.invoke(DefaultEventBroadcaster.java:173)
>      at com.sun.proxy.$Proxy11.pageRenderingError(Unknown Source)     at 
> org.apache.fop.area.RenderPagesModel.renderPage(RenderPagesModel.java:206)    
>  at 
> org.apache.fop.area.RenderPagesModel.checkPreparedPages(RenderPagesModel.java:174)
>      at 
> org.apache.fop.area.RenderPagesModel.addPage(RenderPagesModel.java:146)     
> at 
> org.apache.fop.layoutmgr.AbstractPageSequenceLayoutManager.finishPage(AbstractPageSequenceLayoutManager.java:316)
>      at 
> org.apache.fop.layoutmgr.PageSequenceLayoutManager.finishPage(PageSequenceLayoutManager.java:243)
>      at 
> org.apache.fop.layoutmgr.AbstractPageSequenceLayoutManager.makeNewPage(AbstractPageSequenceLayoutManager.java:287)
>      at 
> org.apache.fop.layoutmgr.PageSequenceLayoutManager.makeNewPage(PageSequenceLayoutManager.java:192)
>      at 
> org.apache.fop.layoutmgr.PageBreaker.handleBreakTrait(PageBreaker.java:633)   
>   at org.apache.fop.layoutmgr.PageBreaker.startPart(PageBreaker.java:511)     
> at 
> org.apache.fop.layoutmgr.AbstractBreaker.addAreas(AbstractBreaker.java:659)   
>   at 
> org.apache.fop.layoutmgr.AbstractBreaker.addAreas(AbstractBreaker.java:604)   
>   at 
> org.apache.fop.layoutmgr.AbstractBreaker.addAreas(AbstractBreaker.java:599)   
>   at org.apache.fop.layoutmgr.PageBreaker.doPhase3(PageBreaker.java:338)     
> at 
> org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:458)   
>   at org.apache.fop.layoutmgr.PageBreaker.doLayout(PageBreaker.java:112)     
> at 
> org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:143)
>      at 
> org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:267) 
>     at 
> org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:130)    
>  at 
> org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:360)
>      at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:190)    
>  at de.icomps.xml.FOP$HandlerXML.endElement(FOP.java:1624)     at 
> net.sf.saxon.event.ContentHandlerProxy.endElement(ContentHandlerProxy.java:412)
>      at net.sf.saxon.event.ProxyReceiver.endElement(ProxyReceiver.java:185)   
>   at 
> net.sf.saxon.event.SequenceNormalizer.endElement(SequenceNormalizer.java:230) 
>     at 
> net.sf.saxon.event.ReceivingContentHandler.endElement(ReceivingContentHandler.java:528)
>      at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown 
> Source)     at 
> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown 
> Source)     at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
>  Source)     at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown 
> Source)     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown 
> Source)     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown 
> Source)     at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)     
> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)     at 
> org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)     
> at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:435)     at 
> net.sf.saxon.event.Sender.send(Sender.java:167)     at 
> net.sf.saxon.jaxp.IdentityTransformer.transform(IdentityTransformer.java:368) 
>     at de.icomps.xml.FOP.transformFO(FOP.java:1055)     at 
> de.icomps.xml.FOP.fo2IF(FOP.java:789)     at 
> de.icomps.rep.Report.createWithFOP(Report.java:3772)     at 
> de.icomps.rep.Report.processReport(Report.java:2078)     at 
> de.icomps.rep.ReportClient.createClientReport(ReportClient.java:266)     at 
> de.icomps.rep.ReportClientMulti.genClientReportSingle(ReportClientMulti.java:2537)
>      at 
> de.icomps.rep.ReportClientMulti.genClientReports(ReportClientMulti.java:1804) 
>     at 
> de.icomps.rep.ReportClientMulti.createReport(ReportClientMulti.java:288)     
> at de.icomps.rep.Report.startProcessing(Report.java:1548)     at 
> de.icomps.ijs.JobTask.startJob(JobTask.java:412)     at 
> de.icomps.ijs.JobTask.run(JobTask.java:154)     at 
> java.base/java.lang.Thread.run(Thread.java:834)    Caused by: 
> java.lang.NullPointerException     at 
> net.sf.saxon.event.ReceivingContentHandler.getNodeName(ReceivingContentHandler.java:485)
>      at 
> net.sf.saxon.event.ReceivingContentHandler.startElement(ReceivingContentHandler.java:398)
>      at 
> org.apache.fop.util.DelegatingContentHandler.startElement(DelegatingContentHandler.java:185)
>      at org.apache.fop.util.DOM2SAX.writeNode(DOM2SAX.java:263)     at 
> org.apache.fop.util.DOM2SAX.writeDocument(DOM2SAX.java:73)     at 
> org.apache.fop.render.intermediate.IFSerializer.drawImage(IFSerializer.java:508)
>      at 
> org.apache.fop.render.intermediate.IFRenderer.renderForeignObject(IFRenderer.java:1312)
>      at 
> org.apache.fop.render.AbstractRenderer.renderInlineViewport(AbstractRenderer.java:864)
>      at 
> org.apache.fop.render.AbstractPathOrientedRenderer.renderInlineViewport(AbstractPathOrientedRenderer.java:831)
>      at 
> org.apache.fop.render.intermediate.IFRenderer.renderInlineViewport(IFRenderer.java:862)
>      at 
> org.apache.fop.render.AbstractRenderer.renderInlineArea(AbstractRenderer.java:717)
>      at 
> org.apache.fop.render.intermediate.IFRenderer.renderInlineArea(IFRenderer.java:926)
>      at 
> org.apache.fop.render.AbstractRenderer.renderLineArea(AbstractRenderer.java:692)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:573)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBlock(AbstractRenderer.java:615) 
>     at 
> org.apache.fop.render.intermediate.IFRenderer.renderBlock(IFRenderer.java:998)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:558)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBlock(AbstractRenderer.java:615) 
>     at 
> org.apache.fop.render.intermediate.IFRenderer.renderBlock(IFRenderer.java:998)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:558)
>      at 
> org.apache.fop.render.AbstractPathOrientedRenderer.renderReferenceArea(AbstractPathOrientedRenderer.java:756)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBlock(AbstractRenderer.java:601) 
>     at 
> org.apache.fop.render.intermediate.IFRenderer.renderBlock(IFRenderer.java:998)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:558)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBlock(AbstractRenderer.java:615) 
>     at 
> org.apache.fop.render.intermediate.IFRenderer.renderBlock(IFRenderer.java:998)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:558)
>      at 
> org.apache.fop.render.AbstractRenderer.renderFlow(AbstractRenderer.java:459)  
>    at 
> org.apache.fop.render.AbstractPathOrientedRenderer.renderFlow(AbstractPathOrientedRenderer.java:784)
>      at 
> org.apache.fop.render.AbstractRenderer.renderMainReference(AbstractRenderer.java:436)
>      at 
> org.apache.fop.render.AbstractRenderer.renderBodyRegion(AbstractRenderer.java:360)
>      at 
> org.apache.fop.render.AbstractRenderer.renderRegionViewport(AbstractRenderer.java:307)
>      at 
> org.apache.fop.render.intermediate.IFRenderer.renderRegionViewport(IFRenderer.java:737)
>      at 
> org.apache.fop.render.AbstractRenderer.renderPageAreas(AbstractRenderer.java:272)
>      at 
> org.apache.fop.render.AbstractRenderer.renderPage(AbstractRenderer.java:245)  
>    at 
> org.apache.fop.render.intermediate.IFRenderer.renderPage(IFRenderer.java:587) 
>     at 
> org.apache.fop.area.RenderPagesModel.renderPage(RenderPagesModel.java:193)    
>  ... 48 more
> {code}
> Trying 
> {code:xml}
> <fo:external-graphic height="120mm" width="120mm" src="Test.svg"/>  {code}
> the error does not occur, but the output is wrong (SVG is not displayed 
> correctly - this is the case since FOP 0.95, etc.).
> We tested with our current FOP 2.3 and also with the latest FOP 2.4; used 
> different SVG files, fiddled with several parameters of 
> instream-foreign-object / svg:svg / svg: image, ....always  same error.
> So we end up not being able to use the JDK internal XSLT or Xalan XSLT 
> processor and are stuck with Saxon at this single NullPointerException during 
> FO to IF transaformation. We spend yesterday the whole day (!) search for 
> solutions / workarounds on the web but the only hint we found was something 
> with namespaces or empty URIs.
> We tried to create a reproducable case with "fop.bat" and plain FOP directory 
> (original, without Xalan, without Xalan and with Saxon), same OpenJDK,  
> create single scripts to transform FO to IF and IF to PDF, but the bug didn't 
> occur! So, it seems it only occours when using the Java API.
> {code:java}
>             final Result res = new SAXResult(h);
>             transformer.transform(ssFO, res); {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to