IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] Changement dynamique de police (nfop) ?


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut [C#] Changement dynamique de police (nfop) ?
    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();
    		}

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Ok j'ai trouvé,

    pour ceux que ça intéresse :

    en fait FOP et NFOP ne possèdent que les 14 polices de bases(Helvetica (normal, bold, italic, bold italic), Times (normal, bold, italic, bold italic), Courier (normal, bold, italic, bold italic), Symbol and ZapfDingbats) que doit posséder chaque lecteur PDF selon les specs de Adobe. Pour ajouter des polices à FOP, il faut suivre cette démarche :

    http://xmlgraphics.apache.org/fop/0.20.5/fonts.html.

    Par contre, pour Nfop, je n'ai pas essayé, car je n'ai pas de temps dans mon projet pour ça, je vais utiliser les 3 polices de bases :
    Helvetica, Times et Courier.

    Il faut télécharger les sources de Nfop et les modifier (sûrement), tout ce que je peux dire, c'est que j'utilise la méthode de Laurent Kempé et la version 1.0.0 de Nfop pour faire la transformation. Je ne sais pas si la nouvelle version contient plus de polices...

  3. #3
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    bonjour..
    je voudrais utiliser FOP sous C#.
    je travaille avec fop-0.95beta, alors comment utiliser cette version sous C#, car j'ai essayer de travailler avec Apache.net.dll qu j'ai télécharger sur internet, mais y à un probleme avec les images en plus la version beta elle est beaucoup stable que d'autre.
    merci bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changement dynamique de l'évènement OnClick
    Par cluis dans le forum Access
    Réponses: 3
    Dernier message: 22/03/2006, 11h30
  2. JTable et Modèle : Changement dynamique du modèle
    Par mlle lain dans le forum Composants
    Réponses: 7
    Dernier message: 10/03/2006, 10h00
  3. [MFC] Changement de la police d'un contrôle
    Par nmarf dans le forum MFC
    Réponses: 4
    Dernier message: 16/09/2005, 12h38
  4. Changement dynamiquement de la GDB distante en local
    Par ada_b dans le forum Débuter
    Réponses: 4
    Dernier message: 18/05/2005, 13h15
  5. Changement dynamique d'une iframe
    Par davids21 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/05/2005, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo