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

C++Builder Discussion :

RTF vers HTML


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 69
    Points
    69
    Par défaut RTF vers HTML
    Bonjour à tous,

    Après plusieurs recherches sans résultat, je me permet de poster ici ma question.

    Connaissez vous un composant (RichBox like) qui permet d'exporter son contenu au format HTML.

    Ou alors connaissez vous une dll gratuite facile d'utilisation qui permet de faire la conversion RTF -> HTML.

    La plupart des composants que j'ai trouvé était payant et seule une version trial était disponible. DocFrac avait l'air pas mal mais malheureusement je n'arrive pas à l'utiliser.

    Voila, sinon j'ai vu qu'en VB il y avait quelques sources permettant des conversions "simples" (gras, souligné, italique, ...) si quelqu'un en avait une en c++ ça serait parfait.

    Voila, je suis ouvert à toute propositions ^^

    Cordialement,

    Nicolas

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 69
    Points
    69
    Par défaut
    Bon je poste ma fonction, elle a l'air de fonctionner si jamais quelqu'un à le même problème que moi.
    Elle permet de convertir du code RTF en HTML enfin pour l'instant juste les fonctions de base (Gras, italique, souligné, couleur, police, taille)
    Attention Memo est en fait un RichEdit.


    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
    73
    74
    75
    76
    77
    AnsiString TForm1::ConvertRtf2HTML()
    {
            Memo->SelStart = 0;
            Memo->SelLength = 1;
     
            AnsiString precFont = Memo->SelAttributes->Name;
            int precSize = Memo->SelAttributes->Size;
            TColor precColor = Memo->SelAttributes->Color;
            bool isBold=false;
            bool isItalic=false;
            bool isUnderline=false;
            bool isFont=false;
            AnsiString chaine_html = "";
            int i;
     
            if(Memo->Text == ""){
     
            }else{
     
                 for(i=1;i<=Memo->Text.Length();i++)
                 {
                    Memo->SelStart = i-1;
                    Memo->SelLength = 1;
     
                    if(precFont != Memo->SelAttributes->Name || precSize != Memo->SelAttributes->Size || precColor != Memo->SelAttributes->Color || i==1){
                            if(isFont){
                                    chaine_html+="</font>";
                            }
                            isFont=true;
                            chaine_html+= "<font face=\"" + Memo->SelAttributes->Name + "\" style=\"font-size:" + AnsiString(Memo->SelAttributes->Size) + "px\" color=\"#" + ConvertColor(Memo->SelAttributes->Color) + "\">";
                    }
                    if(!(Memo->SelAttributes->Style == (TFontStyles() << fsBold)) && isBold){
                            chaine_html+="</b>";
                    }
                    if(!(Memo->SelAttributes->Style == (TFontStyles() << fsItalic)) && isItalic){
                            chaine_html+="</i>";
                    }
                    if(!(Memo->SelAttributes->Style == (TFontStyles() << fsUnderline)) && isUnderline){
                            chaine_html+="</u>";
                    }
     
                    if((Memo->SelAttributes->Style == (TFontStyles() << fsBold)) && !isBold){
                            chaine_html+="<b>";
                    }
                    if((Memo->SelAttributes->Style == (TFontStyles() << fsItalic)) && !isItalic){
                            chaine_html+="<i>";
                    }
                    if((Memo->SelAttributes->Style == (TFontStyles() << fsUnderline)) && !isUnderline){
                            chaine_html+="<u>";
                    }
     
                    precFont = Memo->SelAttributes->Name;
                    precSize = Memo->SelAttributes->Size;
                    precColor = Memo->SelAttributes->Color;
                    isBold = Memo->SelAttributes->Style == (TFontStyles() << fsBold);
                    isItalic = Memo->SelAttributes->Style == (TFontStyles() << fsItalic);
                    isUnderline = Memo->SelAttributes->Style == (TFontStyles() << fsUnderline);
     
                    chaine_html += Memo->Text[i];
     
                }
            }
            if(isFont){
                    chaine_html+="</font>";
            }
            if(isBold){
                    chaine_html+="</b>";
            }
            if(isItalic){
                    chaine_html+="</i>";
            }
            if(isUnderline){
                    chaine_html+="</u>";
            }
     
            return chaine_html;
    }
    EDIT : Oups, j'ai oublié de mettre le code source de la fonction ConvertColor, je le rajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    AnsiString TForm1::ConvertColor(TColor couleur)
    {
            AnsiString res = IntToHex(couleur, 6);
            res = res.SubString(5,2)+res.SubString(3,2)+res.SubString(1,2);
     
            return res;
    }

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

Discussions similaires

  1. Conversion RTF vers HTML
    Par hardballer dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/05/2015, 09h43
  2. Conversion RTF vers HTML
    Par Invité dans le forum Composants VCL
    Réponses: 3
    Dernier message: 30/09/2013, 09h42
  3. [WD17] Conversion RTF VERS HTML
    Par vegetacherif dans le forum WinDev
    Réponses: 9
    Dernier message: 14/02/2013, 15h29
  4. [PHP 5.3] RTF vers HTML ou TXT
    Par max-mag dans le forum Langage
    Réponses: 0
    Dernier message: 26/11/2012, 16h25
  5. convertir rtf en html
    Par busard dans le forum Langage
    Réponses: 2
    Dernier message: 08/02/2003, 12h08

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