imagen con fop

angel29
10 de Mayo del 2006
Hola, no consigo mostrar una imagen en el pdf que intento construir. El pdf lo construyo con xml y xsl mediante fop pero al escribir en el xsl fo:external-graphic <fo:external-graphic src="ruta absoluta"/>
no muestra la imagen. He probado usando el atributo href y tambien escribiendo la ruta relativa pero no me ha dado resultado. ¿Alguna sugerencia?, muchas gracias!!

pruizno
10 de Mayo del 2006
Hola amigo,

Te envio un extracto de un codigo en XSL para que saques una idea de como puede ser..

Saludos.

<xsl:variable name="vrImagenFondo1" select="s:Documento/s:Imp/s:Glosa/s:ENTIDAD_PAC"/>
<fo:block-container width="5.59cm" height="4cm" top="20.5cm" left="11cm" position="absolute">
<fo:block>
<fo:external-graphic src="C:\dteplus\79670700\0\timbrePAC\{$vrImagenFondo1}" width="3cm" height="3cm"/>
</fo:block>
</fo:block-container>

angel29
10 de Mayo del 2006
Gracias Pruizno aunque no lo he conseguido. Consigo sacar el informe con texto pero con la imagen no hay forma, he intentado con gif y jpg y rutas absolutas y relativas para la propiedad src pero no hay manera. No sé si el problema puede estar al hacer el transform desde java

angel29
10 de Mayo del 2006
Se me olvidaba comentar que la aplicacion está montada de la siguiente manera: recoge de sesion el string con el xml a mostrar, recoge el xsl y realiza la transformacion a pdf
Source xsltSrc = new StreamSource(new java.io.InputStreamReader(request.getSession().getServletContext().getResourceAsStream(xslPath)));
Transformer trans = this.transformerFactory.newTransformer(xsltSrc);

trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");


trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
//trans.transform(new DOMSource(dom), new SAXResult(pdfDriver.getContentHandler()));
Source src = new StreamSource(new StringReader(xmlString));
trans.transform(src, new SAXResult(pdfDriver.getContentHandler()));
byte[] content = out.toByteArray();
response.setContentLength(content.length);
response.getOutputStream().write(content);
response.getOutputStream().flush();
response.getOutputStream().close();