RE: FOP 1.1 to 2.2 Migration - SEVERE Error with External Graphics

"Simon Steiner" <[email protected]>
Newsgroups gmane.text.xml.fop.user
Message-ID <[email protected]>
Hi,

 

I could get round this by using in the fopservlet, but I think it’s a
security issue allowing filesystem access from tomcat

 

            public Resource getResource(URI uri) throws IOException {

                if (uri.toASCIIString().startsWith("file:")) {

                    return new Resource(new FileInputStream(uri.getPath()));

                }

                return new
Resource(getServletContext().getResourceAsStream(uri.toASCIIString()));

            }

Thanks

 

From: Graeme Wellington
[mailto:[email protected]] 
Sent: 16 March 2018 00:12
To: [email protected]
Subject: FOP 1.1 to 2.2 Migration - SEVERE Error with External Graphics

 

More info…

 

I have several servlets and FOs to test the various combinations:

http://localhost:8080/fop/fop?fo=C:/temp/readme.fo   ; works OK

http://localhost:8080/fop/fop?fo=C:/temp/readmeX.fo ; fails

http://localhost:8080/fop/fopX?fo=C:/temp/readmeX.fo ; fails

http://localhost:8080/fop/fopZ?fo=C:/temp/readmeX.fo ; fails

 

FopServlet.java                 ; as distributed

FopServletX.java              ; attempt to read custom configuration fop.xml

FopServletZ.java              ; attempt to read custom configuration fop.xml
/ custom Resolver

 

Readme.fo         ; as distributed – works with:
http://localhost:8080/fop/fop?fo=C:/temp/readme.fo

ReadmeX.fo       ; external-graphic included

 

Fop.xml                ; as distributed with base = “.”

 

The batch command generates the PDF successfully (attached):-

"C:\fop-2.2\fop\fop.bat" -fo=C:/temp/readmeX.fo -pdf
"C:/temp/FOP-ReadmeX-fo.pdf"  > glw-FO.txt 2>&1

 

 

Regards

 

Graeme Wellington

Pro-Time Building Solutions Pty Ltd

178 Martin Road WALL FLAT SA 5254

Mobile: 0419 808 473

Email:  <mailto:[email protected]>
[email protected]

 



 

From: Robert Meyer <[email protected] <mailto:[email protected]> > 
Sent: Thursday, March 15, 2018 5:58 AM
To: [email protected]
<mailto:[email protected]> 
Subject: Re: FOP 1.1 to 2.2 Migration - SEVERE Error with External Graphics

 

It's been a while, but shouldn't it throw a nicer message than an NPE? Maybe
something like "Oh, hello. We see you've not entered a path standard URI
format. Instead you've entered '<something>'. Please check and try again".

 

Then again, FOP's never been that user friendly! I might look into it
myself.

 

Robert

  _____  

From: Szeak (Register Man) <[email protected] <mailto:[email protected]> >
Sent: 14 March 2018 13:36
To: [email protected]
<mailto:[email protected]> 
Subject: Re: FOP 1.1 to 2.2 Migration - SEVERE Error with External Graphics 

 

Hi,

FOP from version 2 using standard URI format for pathes.
So you need to set the pathes in this format also in your FOP config and in
FO.
Ie.: /C/Temp/tomcat.gif or ///C/Temp/tomcat.gif

Best regards, Szeak

2018-03-14 03:12 keltezéssel, Graeme Wellington írta:

Hi

 

I have just migrated to FOP 2.2 - I am using apache-tomcat-8.5.29 / Java 1.8

 

I am using a FOP servlet to render PDF form XML data source.

 

I have a basic example that works on FOP 1.1 but not FOP 2.2

 

http://localhost:8080/fop/fopZ?fo=C:/temp/readme.fo

 

The readme.fo comes with the FOP distribution.

 

Without change the servlet works ok and I get a PDF.

 

When I try and add 1 line to include an image I get SEVERE error as below.

 

I have tried various permutations if the following lines separately but no
luck :

 

<fo:external-graphic src="C:/Temp/tomcat .gif"/>

OR

                <fo:external-graphic src="tomcat.gif"/>  

                OR

                <fo:external-graphic src="../graphics/tomcat.gif"/>  

                …

 

I have loaded the tomcat.gif at the various locations to match.

 

However I do not think it is getting that far.

 

I have a customised configuration file and have set the base as follows:

 

<base>./</base> 

 

 

Can anyone help?

 

 

Mar 14, 2018 12:06:34 PM org.apache.catalina.core.StandardWrapperValve
invoke

SEVERE: Servlet.service() for servlet [FopZ] in context with path [/fop]
threw exception [javax.xml.transform.TransformerException:
java.lang.NullPointerException] with root cause

java.lang.NullPointerException

                at
java.io.FilterInputStream.markSupported(FilterInputStream.java:243)

                at
org.apache.xmlgraphics.image.loader.util.ImageUtil.decorateMarkSupported(Ima
geUtil.java:213)

                at
org.apache.xmlgraphics.image.loader.util.ImageUtil.autoDecorateInputStream(I
mageUtil.java:228)

                at
org.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext.createI
mageSource(AbstractImageSessionContext.java:373)

                at
org.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext.access$
100(AbstractImageSessionContext.java:53)

                at
org.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext$Unrestr
ictedFallbackResolver.createSource(AbstractImageSessionContext.java:364)

                at
org.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext.newSour
ce(AbstractImageSessionContext.java:94)

                at
org.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext.needSou
rce(AbstractImageSessionContext.java:191)

                at
org.apache.xmlgraphics.image.loader.cache.ImageCache.needImageInfo(ImageCach
e.java:123)

                at
org.apache.xmlgraphics.image.loader.ImageManager.getImageInfo(ImageManager.j
ava:123)

                at
org.apache.fop.fo.flow.ExternalGraphic.bind(ExternalGraphic.java:81)

                at org.apache.fop.fo.FObj.processNode(FObj.java:126)

                at
org.apache.fop.fo.FOTreeBuilder$MainFOHandler.startElement(FOTreeBuilder.jav
a:291)

                at
org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:179)

                at
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToX
MLSAXHandler.java:208)

                at
com.sun.org.apache.xml.internal.serializer.ToSAXHandler.flushPending(ToSAXHa
ndler.java:281)

                at
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.endElement(ToXMLS
AXHandler.java:247)

                at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Abst
ractSAXParser.java:609)

                at
com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyEl
ement(AbstractXMLDocumentParser.java:183)

                at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartEl
ement(XMLNSDocumentScannerImpl.java:351)

                at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$Fragm
entContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)

                at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocum
entScannerImpl.java:602)

                at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSD
ocumentScannerImpl.java:112)

                at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanD
ocument(XMLDocumentFragmentScannerImpl.java:505)

                at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Con
figuration.java:841)

                at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Con
figuration.java:770)

                at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:14
1)

                at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractS
AXParser.java:1213)

                at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdenti
ty(TransformerImpl.java:641)

                at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Trans
formerImpl.java:737)

                at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Trans
formerImpl.java:351)

                at
org.apache.fop.servlet.FopServletZ.render(FopServletZ.java:293)

                at
org.apache.fop.servlet.FopServletZ.renderFO(FopServletZ.java:232)

                at
org.apache.fop.servlet.FopServletZ.doGet(FopServletZ.java:169)

                at
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)

                at
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:231)

                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:166)

                at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:193)

                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:166)

                at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:198)

                at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:96)

                at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase
.java:496)

                at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140
)

                at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

                at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogVa
lve.java:650)

                at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:87)

                at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)

                at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)

                at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java
:66)

                at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtoco
l.java:790)

                at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.jav
a:1459)

                at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:
49)

                at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:11
42)

                at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6
17)

                at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.ja
va:61)

                at java.lang.Thread.run(Thread.java:745)

 

 

 

Regards

 

Graeme Wellington

Pro-Time Building Solutions Pty Ltd

178 Martin Road WALL FLAT SA 5254

Mobile: 0419 808 473

Email:  <mailto:[email protected]>
[email protected]
image001.png (image/png, 21 KB) - not displayed
image002.png (image/png, 21 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.