Salut,
j'utilise NFop (l'ancienne version avec le "engine") et je change dynamiquement la police de mon document XSL-FO avant de le soumettre à la classe NFop. Seulement le comportement est très bizarre. La police change 1 fois toutes les deux heures (je remplace en fait l'attribut "font-family" de la balise "fo:flow").
J'ai essayé "Times New Roman", "Arial" et "Verdana". Je ne comprends pas pourquoi la classe ne prend pas mes modifications.
J'ai pourtant effacé le contenu du réperoire "bin" (sauf la dll de ApacheFop) et regénéré pour être sûr que la compilation était à jour.
Est-ce que quelqu'un a déjà eu ce problème ou a une idée ?
Moi je sèche... je vous mets le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 private void Page_Load(object sender, System.EventArgs e) { String username; XmlTextReader lecteurXml, lecteurXslt; XmlDocument docXml, docXslt; XmlElement racine; XmlNode noeud; StringWriter fullFoDoc; XslTransform xslt; String xPathPolice = "//fo:flow"; String pathXslt = Server.MapPath("../XSLT/PDF/ApercuPdf" + Request.QueryString["modele"] + ".xslt"); String pathXsltTemp = Server.MapPath("../PDF/ApercuPdf.xslt"); String pathCv = Server.MapPath("../PDF/Cv.pdf"); lecteurXslt = new XmlTextReader(pathXslt); docXslt = new XmlDocument(); docXslt.Load(lecteurXslt); lecteurXslt.Close(); racine = docXslt.DocumentElement; // Pour gérer les espaces de noms XmlNamespaceManager nsmgr = new XmlNamespaceManager(docXslt.NameTable); nsmgr.AddNamespace("fo", "http://www.w3.org/1999/XSL/Format"); noeud = racine.SelectSingleNode(xPathPolice, nsmgr); switch(Request.QueryString["police"]) { case "Arial" : noeud.Attributes.GetNamedItem("font-family").InnerXml = "Arial"; break; case "Times" : noeud.Attributes.GetNamedItem("font-family").InnerXml = "Times New Roman"; break; case "Verdana" : noeud.Attributes.GetNamedItem("font-family").InnerXml = "Verdana"; break; default : noeud.Attributes.GetNamedItem("font-family").InnerXml = "Verdana"; break; } docXslt.Save(pathXsltTemp); // On lit le doc depuis la bd username = Request.QueryString["username"]; lecteurXml = Global.LireFichierBd(Global.GetCheminBd(username)); docXml = new XmlDocument(); docXml.Load(lecteurXml); lecteurXml.Close(); // Transformation du XML en FOP à l'aide de XSLT xslt = new XslTransform(); xslt.Load(pathXslt); fullFoDoc = new StringWriter(); xslt.Transform(docXml, null, fullFoDoc, null); //Transformation du FOP en PDF TransformerPdf(fullFoDoc.ToString(), pathCv); // A faire : changer le nom du fichier en ".pdf" au lancement (voir QueryString) Response.WriteFile(pathCv); // On efface le fichier temporaire //File.Delete(pathXsltTemp); Response.End(); }
Partager