[FOP] Problème de path avec la génération d'un PDF
Bonjour à tous !
Je cherche à générer un fichier PDF à partir d'un XML et d'un XSL-FO. Dans un premier temps, j'ai ecrit mon xsl sous XML Spy. Pour centraliser mes templates, j'ai créé un autre xsl appelé common.xsl et je l'ai mis dans un dossier common.
J'ai donc le debut de mon xsl qui ressemble à ca :
Code:
1 2 3
| <?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xml.apache.org/fop/extensions">
<xsl:import href="common/common.xsl"/> |
Le problème vient du fait que maintenant je veux générer mon pdf en java et non plus avec xml Spy. Du coup j'ai créé la méthode suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| private static void convertXml2Pdf(InputStream xml, InputStream xslt, File pdf)
throws IOException, TransformerException
{
// Construct driver
Driver driver = new Driver();
// Setup logger
Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
driver.setLogger(logger);
MessageHandler.setScreenLogger(logger);
// Setup Renderer (output format)
driver.setRenderer(Driver.RENDER_PDF);
// Setup output
OutputStream out = new FileOutputStream(pdf);
try
{
driver.setOutputStream(out);
// Setup XSLT
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xslt));
// Setup input for XSLT transformation
Source src = new StreamSource(xml);
// Resulting SAX events (the generated FO) must be piped through to FOP
Result res = new SAXResult(driver.getContentHandler());
// Start XSLT transformation and FOP processing
transformer.transform(src, res);
}
finally
{
out.close();
}
} |
Cette méthode se situe dans une classe CTest qui est dans le package com.test.xslfo. Dans ce package se trouve également un dossier xsl, dans lequel j'ai mis mon xslfo, ainsi que le repertoire common qui contient common.xsl. Vous suivez ?? non ?? Bon voila l'arborescence:
\org\test\xslfo
|
|_ \xsl
| |_ \common
| | |_comon.xsl
| |
| |_monxsl.xsl
|
|_CTest.java
Donc mon problème vient du fait que lorsque je veux générer mon PDF, fop me lance une exception en me disant qu'il ne peut pas trouver common.xsl. En fait il ne le cherche pas dans le repertoire org.test.xslfo.xsl.common mais dans le repertoire common tout court.
Ma question est la suivante, est ce qu'il est possible de forcer le repertoire de travail de FOP pour lui dire de travailler dans le repertoire que je veux ??
En esperant avoir été clair :oops: :oops:
Merci d'avance...