Thanks for your answer.

I am not familiarized with URIResolver but I check it and, if I understood,
I must implement it creating a new class that implements the URIResolver
class and the method resolve(String href, String base)

In the javadoc the definition of both arguments are:
href - An href attribute, which may be relative or absolute.
base - The base URI in effect when the href attribute was encountered.

If I am correct HRef is the filename. So my URIResolver will have
img/logo.gif as href parameter.

Correct?

And in the case that I dont know the name of my image indicated on the XSL?
how can I solve the problem?

thank you

regards



Philippe Voncken wrote:
> 
> Hi,
> 
> you must implementing the UriResolver and set your fopFactory with it.
> 
> fopFactoy.setUriResolver()
> 
> regards,
> Philippe
> 
> 2010/2/18 pjmorce <[email protected]>
> 
>>
>> 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]
>>
>>
> 
> 

-- 
View this message in context: 
http://old.nabble.com/-ERROR--Image-not-found-tp27636263p27636935.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