[ https://issues.apache.org/jira/browse/FOP-2241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13640155#comment-13640155 ]
Daniela Kruse edited comment on FOP-2241 at 4/24/13 6:33 AM: ------------------------------------------------------------- I can not reproduce the issue from command line because for it to be reproducable, I have to replace the UriResolver which I can do only if I embed it. As long as the datafile-resource in <fo:external-graphic src="datafile://1/778940" width="14.85cm" height="10.5cm" /> is of a normal type, it workes fine but as soon as I try to embed a pdf, I get the exception mentioned above. Example fo: <?xml version="1.0" encoding="utf-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set > <fo:simple-page-master margin-left="1cm " page-width="21.00cm" margin-right="1cm" margin-bottom="1cm " master-name="first" margin-top="2cm" page-height="29.70cm" > <fo:region-body /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="first" id="id1" > <fo:flow flow-name="xsl-region-body" > <fo:block font-family="helvetica,arial,sans-serif" font-size="11pt" text-align="start" > <fo:external-graphic src="datafile://1/778940" width="14.85cm" height="10.5cm" /> </fo:block> </fo:flow> </fo:page-sequence> </fo:root> My UriResolver: package ch.xxx.io.datasource; import java.math.BigDecimal; import javax.xml.transform.Source; import javax.xml.transform.TransformerException; import javax.xml.transform.URIResolver; import javax.xml.transform.stream.StreamSource; import ch.xxx.db.persimpl.maindb.DATAFILE; import ch.xxx.lang.XStringAnalyze; public class DatafileURIResolver implements URIResolver { /** * Should be datafile://<groupid>/<datafile-id> */ public static final String PREFIX = "datafile://"; private URIResolver fallbackResolver; /** * @param fallbackResolver Usually the resolver that has been registered before it was replaced by this */ public DatafileURIResolver(URIResolver fallbackResolver) { this.fallbackResolver = fallbackResolver; } @Override public Source resolve(String href, String base) throws TransformerException { if (href.startsWith(PREFIX)) { String strippedPrefix = href.substring(PREFIX.length()); return new StreamSource(pds.getInputStream()); } return null; //return fallbackResolver.resolve(href, base); } } was (Author: dkruse): I can not reproduce the issue from command line because for it to be reproducable, I have to replace the UriResolver which I can do only if I embed it. As long as the datafile-resource in <fo:external-graphic src="datafile://1/778940" width="14.85cm" height="10.5cm" /> is of a normal type, it workes fine but as soon as I try to embed a pdf, I get the exception mentioned above. My UriResolver: > Plugin for PDF-embedding does not support custom UriResolver > ------------------------------------------------------------ > > Key: FOP-2241 > URL: https://issues.apache.org/jira/browse/FOP-2241 > Project: Fop > Issue Type: Bug > Components: images > Affects Versions: 1.1 > Environment: Linux, but should not matter > Reporter: Daniela Kruse > > http://svn.apache.org/repos/asf/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PreloaderPDF.java > This class seems not to support the custom uri loader set on creation: > setURIResolver(new DatafileURIResolver(fopFactory.getURIResolver())); > Resulting stack trace is: > ERROR: '' > javax.xml.transform.TransformerException: java.lang.NullPointerException > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:736) > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:340) > at ch.invoca.represent.fop.Fo2PDF.convertFO2PDF(Fo2PDF.java:82) > at > ch.invoca.bapi.delivery.post.PostBarcodeHelper.integratePdfFO(PostBarcodeHelper.java:452) > at > ch.invoca.bapi.delivery.post.PostBarcodeHelper.main(PostBarcodeHelper.java:607) > Caused by: java.lang.NullPointerException > at > org.apache.fop.datatypes.URISpecification.getURL(URISpecification.java:47) > at > org.apache.fop.datatypes.URISpecification.escapeURI(URISpecification.java:117) > at > org.apache.fop.render.pdf.pdfbox.PreloaderPDF.deriveDocumentURI(PreloaderPDF.java:95) > at > org.apache.fop.render.pdf.pdfbox.PreloaderPDF.loadPDF(PreloaderPDF.java:110) > at > org.apache.fop.render.pdf.pdfbox.PreloaderPDF.preloadImage(PreloaderPDF.java:83) > at > org.apache.xmlgraphics.image.loader.ImageManager.preloadImage(ImageManager.java:175) > at > org.apache.xmlgraphics.image.loader.cache.ImageCache.needImageInfo(ImageCache.java:128) > at > org.apache.xmlgraphics.image.loader.ImageManager.getImageInfo(ImageManager.java:122) > at org.apache.fop.fo.flow.ExternalGraphic.bind(ExternalGraphic.java:81) > at org.apache.fop.fo.FObj.processNode(FObj.java:124) > at > org.apache.fop.fo.FOTreeBuilder$MainFOHandler.startElement(FOTreeBuilder.java:280) > at org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:175) > at > com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:208) > at > com.sun.org.apache.xml.internal.serializer.ToSAXHandler.flushPending(ToSAXHandler.java:281) > at > com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.endElement(ToXMLSAXHandler.java:247) > at > com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606) > at > com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183) > at > com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:353) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) > at > com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489) > at > com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) > at > com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) > at > com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) > at > com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210) > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:631) > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:727) > ... 4 more > --------- > java.lang.NullPointerException > at > org.apache.fop.datatypes.URISpecification.getURL(URISpecification.java:47) > at > org.apache.fop.datatypes.URISpecification.escapeURI(URISpecification.java:117) > at > org.apache.fop.render.pdf.pdfbox.PreloaderPDF.deriveDocumentURI(PreloaderPDF.java:95) > at > org.apache.fop.render.pdf.pdfbox.PreloaderPDF.loadPDF(PreloaderPDF.java:110) > at > org.apache.fop.render.pdf.pdfbox.PreloaderPDF.preloadImage(PreloaderPDF.java:83) > at > org.apache.xmlgraphics.image.loader.ImageManager.preloadImage(ImageManager.java:175) > at > org.apache.xmlgraphics.image.loader.cache.ImageCache.needImageInfo(ImageCache.java:128) > at > org.apache.xmlgraphics.image.loader.ImageManager.getImageInfo(ImageManager.java:122) > at org.apache.fop.fo.flow.ExternalGraphic.bind(ExternalGraphic.java:81) > at org.apache.fop.fo.FObj.processNode(FObj.java:124) > at > org.apache.fop.fo.FOTreeBuilder$MainFOHandler.startElement(FOTreeBuilder.java:280) > at org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:175) > at > com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:208) > at > com.sun.org.apache.xml.internal.serializer.ToSAXHandler.flushPending(ToSAXHandler.java:281) > at > com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.endElement(ToXMLSAXHandler.java:247) > at > com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606) > at > com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183) > at > com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:353) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) > at > com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489) > at > com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) > at > com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) > at > com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) > at > com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210) > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:631) > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:727) > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:340) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira