Problème création de PDF

flo114 Messages postés 3 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 7 octobre 2008 - 29 sept. 2008 à 14:21
flo114 Messages postés 3 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 7 octobre 2008 - 30 sept. 2008 à 08:43
Bonjour tout le monde.

alors voila mon problème. Je génère des fichier pdf avec la librairie
FOP, j'ai donc crée au préalable une feuille de style XSL-FO et mon
fichier XML se génère automatiquement, grâce à JDOM.


Mon problème vient que, suivant l'emplacement du programme sur le
disque dur la création ne marche pas. Voici le code qui génère
l'exception:

 
Driver driver = new Driver();
driver.setRenderer(Driver.RENDER_PDF);
driver.setOutputStream(new java.io.FileOutputStream(fichierPDF));
Result resultat = new SAXResult(driver.getContentHandler());

Source source = new StreamSource(fichierXML);

Source style = new StreamSource(fichierXSL);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(style);
transformer.transform(source, resultat);

Sur cette dernière ligne cette exception est générée :
 
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: java.net.MalformedURLException: unknown protocol: c
 

Après avoir testé différents emplacement, on dirait que le programme
plante si dans son chemin il y a un espace (comme dans "Program Files"
par exemple, ou "Documents and Settings").

Si l'erreur vient effectivement de là, sauriez-vous comment faire pour
qu'il accepte les espaces dans le chemin ? Parce que ca serait sympa
que l'utilisateur puisse choisir d'installer son programme ou il le
souhaite(en particulier dans "Program Files").


Merci d'avance


PS: Pour récupérer le chemin d'ou est exécuté le programme j'utilise :

String chemin = System.getProperty("user.dir");

2 réponses

indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
29 sept. 2008 à 15:51
Salut,
peut-être qu'un simple:
new FileOutputStream(new File(System.getProperty("user.dir")));

pourrait suffire

A voir

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0
flo114 Messages postés 3 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 7 octobre 2008
30 sept. 2008 à 08:43
Merci de ta supposition indiana_jules mais apparament ce n'était pas ca.

En fait j'ai du préciser le protocole devant l'url.

Donc à ma création du fichier XML j'ai uniquement du lui passer le
chemin, sans rien de plus (donc avec un "System.getProperty("user.dir")". Mais lorsque je vais chercher mon fichier
XML en faisant un "new StreamSource(fichierXML)" je dois lui mettre le
protocole "file:" devant.

Maintenant je ne sais pas pourquoi quand il n'y a pas d'espace dans le
chemin ça marche sans protocole mais au moins avec le protocole devant
ça marche dans tous les cas.
0
Rejoignez-nous