Hello

I used a simple example on the Internet about how to use FOP in java
(http://javaboutique.internet.com/tutorials/FOP/):

  - I Created a simple Java application with a class that takes an XML and
converts it into a PDF (using a XSL) containing an image. The name of my
class is Process.java and it has a method "process". It works fine when
called directly as a java application.

  - I Created a simple web service that just call this "process" method of
that class. However, when i call the web service, i get an error:
        "[ERROR] Image not found: img/logo.gif"
        => The PDF is created but without the image.

Here is the code of my Process.java class:

  public static String process(String xml, String xsl) {
        String sResult = null;
                
                
        try {

                ByteArrayOutputStream foOut = new ByteArrayOutputStream();
                
                ByteArrayOutputStream bOut = new ByteArrayOutputStream();
                InputStream iss =
Process.class.getClassLoader().getResourceAsStream(brique);
                copyFile(new BufferedInputStream(iss), bOut);
                        
                SAXBuilder builder = new SAXBuilder();
                Document document = builder.build(new
ByteArrayInputStream(xml.getBytes()));
                                                
                TransformerFactory factory = TransformerFactory.newInstance();
                InputStream iXsl =
Process.class.getClassLoader().getResourceAsStream(xsl);
                StreamSource iSource = new StreamSource(iXsl);
                        
                Transformer foTrans = factory.newTransformer(iSource);
                
                StreamSource strSourceXML = new StreamSource(new
ByteArrayInputStream(xml.getBytes()));
                foTrans.transform(strSourceXML, new StreamResult(foOut));
                foOut.flush();
                        
                ByteArrayOutputStream pdfOut = new ByteArrayOutputStream();
                TransformerFactory tFactoryFO2PDF = 
TransformerFactory.newInstance();
                Transformer pdfTrans = tFactoryFO2PDF.newTransformer();
                FopFactory fopFactory = FopFactory.newInstance();
                FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
                Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, 
foUserAgent, pdfOut);
                Result res = new SAXResult(fop.getDefaultHandler());
                StreamSource streamSourceXml = new StreamSource(new
ByteArrayInputStream(foOut.toByteArray()));
                pdfTrans.transform(streamSourceXml, res);
                        
                java.io.File file = new java.io.File("d:/res.pdf");
                FileOutputStream foStream = new FileOutputStream(file);
                pdfOut.writeTo(foStream);                       
                        
                        
        } catch(Exception e) {
                e.printStackTrace();
        }
                
        return sResult;
}
        
private static boolean copyFile(InputStream in, OutputStream out) {
        try {

                int c;
                while ((c = in.read()) != -1)
                        out.write(c);

                in.close();
                out.close();
        } catch (IOException io) {
                return false;
        }
        return true;
}


The code of my web service is just:

public static String process(String xml, String xsl) {
        String sResult = null;
                        
        try {
                sResult = Process.process(xml, xsl);
                System.out.println("sss");
        } catch(Exception e) {
                e.printStackTrace();
        }
        return sResult;
}

The web service has the JAR of the Java application in his classpath. The
content of the Jar file is the following one:
      Name            Path
briques.xsd          
logo.gif                 img\
Manifest.mf          meta-inf\
Process.class      tst
saxon-licence.lic  
xsl2.xslt

I call the web service with the following parameters:

xml = "<?xml version='1.0' encoding='UTF-8'?>"+
                                                         "<Catalog>"+
                                                                "<Book>"+
                                                                        
"<Title>Mastering EJB</Title>"+
                                                                        
"<Author>Ed Roman</Author>"+
                                                                        
"<Price>$45.00</Price>"+
                                                                "</Book>"+
                                                                "<Book>"+
                                                                        
"<Title>Design Patterns</Title>"+
                                                                        
"<Author>Erich Gamma</Author>"+
                                                                        
"<Price>$50.00</Price>"+
                                                                "</Book>"+
                                                                "<Book>"+
                                                                        
"<Title>Effective Java</Title>"+
                                                                        
"<Author>Josch Bloch</Author>"+
                                                                        
"<Price>$30.00</Price>"+
                                                                "</Book>" +
                                                        "</Catalog>";

xsl = "xsl2.xslt";

In the xsl2.xslt I have a part of code like this to insert the image on the
pdf:
...
<fo:block>
  <fo:external-graphic src="img/logo.gif"/>
</fo:block>
...


The XSL is found in the JAR because the PDF file is generated. But the
following error still appearing and the image is not inserted on the PDF:
[ERROR] Image not found: img/logo.gif

What am I doing wrong?

Thanks
Regards
-- 
View this message in context: 
http://old.nabble.com/-ERROR--Image-not-found-tp27636263p27636263.html
Sent from the FOP - Users mailing list archive at Nabble.com.


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

Reply via email to