[FOP 0.20.5] Génération PDF
Bonjour, j'utilise la version 0.20.5 de fop (j'ai pas trop le choix) et j'ai un soucis lors de la création de mon pdf.
J'utilise le code d'exemple de la version 0.20.5 de fop => ExampleXML2PDF
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 40 41 42 43 44 45 46 47
| protected void transformXsl(File source, File target, InputStream xsl)
throws SaxonApiException, IOException{
//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 = null;
try {
out = new java.io.FileOutputStream(target);
try {
driver.setOutputStream(out);
//Setup XSLT
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xsl));
//Setup input for XSLT transformation
Source src = new StreamSource(source);
//Resulting SAX events (the generated FO) must be piped through to FOP
Result res = new SAXResult(driver.getContentHandler());
setParameter(transformer);
//Start XSLT transformation and FOP processing
transformer.transform(src, res);
} catch (TransformerConfigurationException e) {
getLog().error(e.getMessage());
} catch (TransformerException e) {
getLog().error(e.getMessage());
}
}catch (FileNotFoundException e) {
getLog().error(e.getMessage());
} finally {
out.close();
} |
et dans mes log j'ai comme erreur :
Code:
1 2 3 4 5 6 7
|
[ERROR]
[STDOUT] Unsupported element encountered: pbs (Namespace: <a href="http://www.bsb.com/pbs/aggregated" target="_blank">http://www.bsb.com/pbs/aggregated</a>). Source context: unavailable
[STDOUT] [ERROR]
[STDOUT] Expected XSL-FO (root, page-sequence, etc.), SVG (svg, rect, etc.) or elements from another supported language.
[STDERR] (Emplacement inconnu de l'erreur)org.apache.fop.apps.FOPException: Root element must be root, not <a href="http://www.bsb.com/pbs/aggregated:pbs" target="_blank">http://www.bsb.com/pbs/aggregated:pbs</a>
[STDERR] [error] javax.xml.transform.TransformerException: javax.xml.transform.TransformerException: L'attribut "xpath-default-namespace" n'est pas admis sur l'élément xsl:stylesheet ! |
Au niveau de mon xsl j'ai plus ou moins ca :
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
| <xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"
xpath-default-namespace="http://www.bsb.com/pbs/aggregated">
...
<xsl:template match="/">
<html>
<head>
<title>PBS</title>
...
</head>
<body>
<div class="pbs">
<xsl:apply-templates mode="content" select="/pbs" />
</div>
<xsl:if test="$displayToc">
<div id="nav">
<a href="#toc">Back to ToC</a>
</div>
<div id="toc" class="toc">
<a name="toc" />
<h1>Table of contents</h1>
<xsl:apply-templates mode="toc"
select="/pbs/lines-of-business/*" />
</div>
</xsl:if>
<xsl:apply-templates select="/pbs/lines-of-business/*"
mode="content" />
</body>
</html>
</xsl:template>
... |
J'aimerais savoir si quelqu'un une solution ou au moins une piste a creuser :)