On 24.07.2010 02:54:03 Phillip Oldham wrote:
> I'm using FOP 0.95, and have happily been running with a custom
> URIResolver class to load and embed SVG images into my PDF output.
> 
> Earlier today I changed the build process so that all the jar files
> that were required by FOP to be in the classpath were un-jar'd and included
> in my main .jar file.

Very bad idea IMO as you're painfully experiencing.

> Since then, I've not been able to load a single image. Here is my
> resolver class:
> 
>     private class ImgURIResolver implements URIResolver {
>       private static final String uriprefix = "img:";
>       private URIResolver defaultResolver;
>       protected ImgURIResolver() {}
>       public ImgURIResolver(URIResolver defaultResolver) {
>           this.defaultResolver = defaultResolver;
>       }
>       public Source resolve(String href, String base) throws 
> TransformerException {
>           if (href.startsWith(PREFIX)){
>                   String name = href.substring(uriprefix.length());
>                   try {
>                       for( int i = 0; i < PDFRenderer.images.size(); i++ ) {
>                               Image img = PDFRenderer.images.get(i);
>                               if( img.filename.equals(name) ) {
>                                       return new StreamSource(new 
> ByteArrayInputStream(img.filedata));
>                                   }
>                           }
>                   } catch (Exception e) {
>                       throw new TransformerException(e.getMessage());
>                   }
>               }
>           return defaultResolver.resolve(href, base);
>       }
>     }
> 
> The images are loaded into memory in another class, and I can confirm that 
> the img.filedata is there.
> 
> The errors I see are as follows:
> 242405 [pool-1-thread-2] ERROR org.apache.fop.fo.FONode - Image not 
> available: No ImagePreloader found for img:myimage.svg
> 242408 [pool-1-thread-2] ERROR org.apache.fop.render - Image not found: 
> img:myimage.svg
> 
> Inline SVGs work as expected.
> 
> I'm at a loss as to what has changed... I've not removed any files, or
> changed anything other than the build.xml file to unjar dependencies &
> bundle everything into one file.
> 
> Any ideas on how I can investigate/resolve this?

The problem are the service providers under META-INF/services in FOP,
Batik and XML Graphics Commons. If you merge the JARs you also have to
merge the service provider files.

I strongly recommend not to merge JARs! You're just asking for trouble
and unnecessary work.


Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to