Bonjour,
J'essaie de transformer un JDOM en un fichier pdf en utilisant Xsl Fo et j'avoue que je galère un peu...
Quelqu'un aurait il une méthode "simple" pour générer ce pdf:
D'avance, un grand merci.
 
			
			






 
			
			
			
			 
			
				
 [FOP] Transformation XML to PDF par FOP
 [FOP] Transformation XML to PDF par FOP
				
				
						
						
				Bonjour,
J'essaie de transformer un JDOM en un fichier pdf en utilisant Xsl Fo et j'avoue que je galère un peu...
Quelqu'un aurait il une méthode "simple" pour générer ce pdf:
D'avance, un grand merci.
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				En fait, j'ai un flux XML que je veux transformer en un flux PDF dans une application Web (sous WSAD 5.0).
J'ai déjà pas mal avancé puisque j'arrive à transformer un fichier xml en un fichier pdf grâce au code suivant (pour ceux que cela peut intéresser) :
Et donc j'essaie d'améliorer cette classe afin de transformer non pas des fichiers mais des flux de type String.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Toutes vos suggestions sont les bien venues.
 
 
				
				
						
						
				Tu n'as quasiment rien à changer : Xalan permet de construire un "StreamSource" à partir d'un Reader ou d'un InputStream, donc tu n'as qu'à passer ton flux au constructeur...
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Euh... j'avoue que j'ai pas très bien compris.Envoyé par Greedo

 
 
				
				
						
						
				http://xml.apache.org/xalan-j/apidoc...eamSource.html
La classe StreamSource qui "contient" ton document XML possède plusieurs constructeurs. Tu t'es servi (enfin l'exemple dont tu t'es inspiré s'est servi) du constructeur prenant un objet File en paramètre.
Si ton document XML est sous forme de String, tu crées un StringReader
Puis tu passes ce reader au constructeur de StreamSource
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Ok, merci pour la récupération de la String et son passage dans le constructeur.
Maintenant, mon problème est la récupération de mon pdf sous forme de String après le passage dans le Xslt...
En tout cas, un grand merci pour ton coup de main.
 
 
				
				
						
						
				Même principe : au lieu de récupérer un SAXResult, crée un StreamResultMaintenant, mon problème est la récupération de mon pdf sous forme de String après le passage dans le Xslt...
(je donne une syntaxe approximative):
Et ensuite tu récupères ton PDF en faisant un result.getWriter().toString() (je n'ai pas testé mais ca doit marcher)
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				En fait, j'ai testé deux possibilités :
getWriter,
getBuffer.
Les deux retours possibles sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
getWriter : une adresse mémoire du genre : javax.xml.transform.stream.StreamResult@34ec1d39
getBuffer : un mélange de XSLFO et XML
Mon soucis est que le retour de ma méthode doit être lisible par Acrobate Reader et je me demande si c'est le cas de l'un des retours que j'ai en sortie de cette méthode:

De plus, je ne me serts plus de "Driver" ce qui, à mon avis (mais je peux me tromper), permettait la transformation en pdf ; non ?
J'avoue qu'un coup de main serait le bien venu parce que là, je nage totalement...
 
 
				
				
						
						
				Aaaaah OK OK, je n'avais pas compris ca comme ca : je croyais que tu voulais a tout prix récupérer du String.
Si tu veux retourner le document PDF tel quel (dans le cas d'une appli web), il doit falloir utiliser un tableau de bytes => ByteArrayOutputStream.
Mais si, plus simplement, tu veux écrire directement dans un fichier, du peux créer un StreamResult a partir d'un objet File.
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Ok, je retourne un tableau de bytes :Envoyé par Greedo
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Mais j'en fais quoi de mon tableau de bytes:
En quoi faut il que je le transforme pour que je puisse afficher le pdf:
Merci pour ta patience.
 
 
				
				
						
						
				Par contre là je ne connais pas très bien la méthode : j'ai déja généré du PDF dans une appli java-servlet, mais le retour du PDF etait réalisé par un framework.
Si tu souhaites effectivement retourner du PDF depuis une servlet, je te conseille de regarder du côté de la classe HttpServletResponse.
En gros, il doit falloir faire un setContentType() sur la reponse (avec pour valeur le type MIME pdf ; cherche sur google la liste des types mime) et trouver comment y placer un byte array (regarde peut etre du côté de la methode getOutputStream).
Tiens moi au courant, ca m'intéresse...
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Ok, je regarde ça et je te tiens au courant...
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				J'ai suivi tes conseils et grâce à ce que j'ai trouvé sur Internet, j'ai "pondu" cette nouvelle méthode :Envoyé par Greedo
Et j'ai créé une servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Comme tu l'as deviné, je suis débutant en Struts et je ne sais pas comment appeler ma Servlet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
De plus, ça ne me plaît pas trop d'appeler ma méthode dans la servlet car les paramètres de celle ci sont changeant.
Aurais tu une idée pour résoudre mes deux nouveaux problèmes:
Merci pour ton aide.
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Voilà, j'ai trouvé tout seul comme un grand. 8)
Le code de ma méthode (dans la classe Utilitaire) :
Le code de ma servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Et je rajoute l'appel de la servlet dans une page jsp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
J'espère que cela pourra aider certains d'entre vous...
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
A+ et bonne prog à tous.
Partager