none
Ecriture d'un fichier PDF

    Question

  • Bonjour tout le monde,

    Je viens d'essayer, sur un modèle trouvé là :

    https://dotnet.developpez.com/articles/itextsharp/

    de créer un chunk pour fichier PDF comme ceci :

                           Color c = Color.FromArgb(255, 0, 0);
    Chunk monChunk = new Chunk("„? Hello World „?", FontFactory.GetFont("Courier", 20, Font.Italic, c);

    et l'Intellisense, pour le deuxième argument de FontFactory.GetFont, réclame un float, pourtant lorsque je lui mets 20, C# me dit dans la fenêtre d'erreur "impossible de transformer un int en string", et pour le quatrième argument, où l'Intellisense me réclame une Color, la fenêtre d'erreur m'oppose "conversion impossible de System.Font.Color en float".

    Il me semble que ça ressemble à ce qu'on appelle un sac de nœuds ?

    Un problème avec les références, peut-être ?

    FontFactory

    GetFont

    Voici le contexte :

    Pour écrire dans un fichier PDF je viens d'essayer iTextSharp tel que présenté là : https://www.supinfo.com/articles/single/3969-generer-pdf-c

    ça marche, sauf qu'en lisant ça il me paraissait évident qu'il allait suffire de mettre en forme du texte dans le richTextBox pour que la même mise en forme soit obtenue dans le PDF.

    Bon, apparemment, il y a plus de boulot que ça.


    System.Drawing est en version 4.0.0.0, sur plateforme 4.0.30319

    iTextSharp est en version 5.5.12.0, sur plateforme 2.0.50727

    Tiens, est-ce que je tiens une piste ? Le projet (WinForm), lui, est créé pour .Net 4.6.1, sur Visual Studio Professional 2017 version 15.5.2, mis à jour hier par mise à jour automatique.

    Au fait, pour vérifier si il y a d'autres mises à jour, ce n'est pas dans le menu d'aide de Visual Studio ? Dans la boîte de dialogue "A propos" ?

    J'ai installé iTextSharp avec le gestionnaire de packages NuGet, j'avais l'habitude de considérer qu'il s'occupe automatiquement de veiller à la cohérence des versions ?





    • Modifié Gloops vendredi 22 décembre 2017 11:20
    vendredi 22 décembre 2017 10:49

Réponses

  • Bon, par la méthode marteau-burin, ça marche.

    J'ai sélectionné Font, appuyé sur F12 pour faire apparaître la définition, et de là recopié le constructeur qui m'intéresse pour le recoller dans le code.

    Mon initialisation est devenue ceci :

          iTextSharp.text.Font F = FontFactory.GetFont(FontFactory.HELVETICA, System.Text.Encoding.Default.ToString(), 20, (int)FontStyle.Bold);
          //public static Font GetFont(string fontname, string encoding, float size, int style);
          Chunk chunk = new Chunk("Hello, World !", F);

    Le cast sur le dernier argument a permis que soit sélectionné le bon constructeur.


    A noter à un moment, un message signalant une ambiguïté entre System.Drawing.Font et iTextSharp.text.Font

    • Marqué comme réponse Gloops vendredi 22 décembre 2017 12:22
    • Modifié Gloops vendredi 22 décembre 2017 12:26
    vendredi 22 décembre 2017 12:22