creation d'un fichier pdf à partir d'un fichier xml
bonjour,
Voilà j'essaye de creer un fichier pdf à partir d'un fichier xml.
J'ai vu qu'il y a déjà un exemple sur la FAQ mais le problème c'est que j'arrive pas à le faire marcher sur mon ordi.
Voilà, j'ai pris le meme fichier xml
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
| <?xml version="1.0" encoding="ISO-8859-1"?>
<annuaire>
<personne id="0">
<nom>nom0</nom>
<prenom>nom0</prenom>
<adresse>adresse0</adresse>
</personne>
<personne id="1">
<nom>nom1</nom>
<prenom>nom1</prenom>
<adresse>adresse1</adresse>
</personne>
<personne id="2">
<nom>nom2</nom>
<prenom>nom2</prenom>
<adresse>adresse2</adresse>
</personne>
<personne id="3">
<nom>nom3</nom>
<prenom>nom3</prenom>
<adresse>adresse3</adresse>
</personne>
<personne id="4">
<nom>nom4</nom>
<prenom>nom4</prenom>
<adresse>adresse4</adresse>
</personne>
</annuaire> |
le même fichier XSL
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
<?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">
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:fox="http://xml.apache.org/fop/extensions">
<fo:layout-master-set>
<fo:simple-page-master master-name="all"
page-height="29.7cm"
page-width="21cm"
margin-top="1cm"
margin-bottom="2cm"
margin-left="2.5cm"
margin-right="2.5cm">
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
<fo:region-before extent="3cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="all">
<fo:static-content flow-name="xsl-region-before">
<xsl:call-template name="entete"/>
</fo:static-content>
<fo:static-content flow-name="xsl-region-after">
<xsl:call-template name="basDePage"/>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block>
<xsl:call-template name="miseEnPage"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template name="entete">
<fo:block text-align="center"
font-size="8pt"
line-height="10pt"
border-bottom="#D1D7DC"
border-bottom-style="solid"
border-bottom-width="1pt"
padding-top="2pt"
padding-right="2pt"
padding-left="2pt"
padding-bottom="2pt">
HAUT DE PAGE
</fo:block>
</xsl:template>
<xsl:template name="miseEnPage">
<xsl:apply-templates select="annuaire"/>
</xsl:template>
<xsl:template match="annuaire">
<fo:block>
ANNUAIRE
</fo:block>
<fo:block>
Actuellement, <xsl:value-of select="count(personne)"/> personnes dans l'annuaire.
</fo:block>
<fo:block>
<fo:table table-layout="fixed" width="80%">
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-header>
<fo:table-row font-weight="bold"
text-align="center"
vertical-align="middle"
background-color="#A6A5C2">
<fo:table-cell border="black"
border-style="solid"
border-width="1pt">
<fo:block>ID</fo:block>
</fo:table-cell>
<fo:table-cell border="black"
border-style="solid"
border-width="1pt">
<fo:block>Nom</fo:block>
</fo:table-cell>
<fo:table-cell border="black"
border-style="solid"
border-width="1pt">
<fo:block>Prenom</fo:block>
</fo:table-cell>
<fo:table-cell border="black"
border-style="solid"
border-width="1pt">
<fo:block>Adresse</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:apply-templates select="personne"/>
</fo:table-body>
</fo:table>
</fo:block>
</xsl:template>
<xsl:template match="personne">
<fo:table-row>
<fo:table-cell border="black"
border-style="solid"
border-width="1pt">
<fo:block>
<xsl:value-of select="@id"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border="black"
border-style="solid"
border-width="1pt">
<fo:block>
<xsl:value-of select="nom"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border="black"
border-style="solid"
border-width="1pt">
<fo:block>
<xsl:value-of select="prenom"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border="black"
border-style="solid"
border-width="1pt">
<fo:block>
<xsl:value-of select="adresse"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:template>
<xsl:template name="basDePage">
<fo:block text-align="center"
font-size="8pt"
line-height="10pt"
border-top="#D1D7DC"
border-top-style="solid"
border-top-width="1pt"
padding-top="2pt"
padding-right="2pt"
padding-left="2pt"
padding-bottom="2pt">
<fo:block>
BAS DE PAGE - <fo:page-number/> -
</fo:block>
</fo:block>
</xsl:template>
</xsl:stylesheet> |
et biensure la même classe JAVA
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
| import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.transform.*;
import javax.xml.transform.sax.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import java.io.*;
import java.util.*;
import org.apache.fop.apps.Driver;
public class CreationPDF{
public static void creerPDF(String xml, String xsl, String pdf) throws Exception{
// création du résultat (pdf)
Driver driver = new Driver();
driver.setRenderer(Driver.RENDER_PDF);
driver.setOutputStream(new java.io.FileOutputStream(pdf));
Result resultat = new SAXResult(driver.getContentHandler());
// récupération de la source xml
Source source = new StreamSource(xml);
// création du transformer en fonction du xsl
Source style = new StreamSource(xsl);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(style);
// transformation
transformer.transform(source, resultat);
}
public static void main(String[] args){
try{
creerPDF("Annuaire.xml", "AnnuaireFOP.xsl", "Annuaire.pdf");
}catch(Exception e){e.printStackTrace();}
}
} |
J'ai bien installé la librairie FOP, mais au moment de la compilation j'ai des erreurs.Voilà ce qui m'affiche sur la console :
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
| [ERROR] Logger not set
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: java.net.MalformedURLException: unknown protocol: c
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:805)
at fichierMRX91.CreationPDF.creerPDF(CreationPDF.java:43)
at fichierMRX91.CreationPDF.main(CreationPDF.java:52)
Caused by: javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: java.net.MalformedURLException: unknown protocol: c
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:1002)
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:788)
... 2 more
Caused by: javax.xml.transform.TransformerException: java.net.MalformedURLException: unknown protocol: c
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:996)
... 3 more
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:972)
... 3 more
---------
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: java.net.MalformedURLException: unknown protocol: c
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:1002)
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:788)
at fichierMRX91.CreationPDF.creerPDF(CreationPDF.java:43)
at fichierMRX91.CreationPDF.main(CreationPDF.java:52)
Caused by: javax.xml.transform.TransformerException: java.net.MalformedURLException: unknown protocol: c
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:996)
... 3 more
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:972)
... 3 more
---------
javax.xml.transform.TransformerException: java.net.MalformedURLException: unknown protocol: c
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:996)
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:788)
at fichierMRX91.CreationPDF.creerPDF(CreationPDF.java:43)
at fichierMRX91.CreationPDF.main(CreationPDF.java:52)
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:972)
... 3 more
---------
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:972)
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:788)
at fichierMRX91.CreationPDF.creerPDF(CreationPDF.java:43)
at fichierMRX91.CreationPDF.main(CreationPDF.java:52)
---------
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:972)
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:788)
at fichierMRX91.CreationPDF.creerPDF(CreationPDF.java:43)
at fichierMRX91.CreationPDF.main(CreationPDF.java:52)
---------
javax.xml.transform.TransformerException: java.net.MalformedURLException: unknown protocol: c
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:996)
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:788)
at fichierMRX91.CreationPDF.creerPDF(CreationPDF.java:43)
at fichierMRX91.CreationPDF.main(CreationPDF.java:52)
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:972)
... 3 more
---------
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:972)
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:788)
at fichierMRX91.CreationPDF.creerPDF(CreationPDF.java:43)
at fichierMRX91.CreationPDF.main(CreationPDF.java:52)
---------
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:972)
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:788)
at fichierMRX91.CreationPDF.creerPDF(CreationPDF.java:43)
at fichierMRX91.CreationPDF.main(CreationPDF.java:52) |
J'ai cherché un peu sur le forum, mais j'ai pas vraiment trouvé une réponse à cette question. Merci pour votre aide.