Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Conversion texte en rtf | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Conversion texte en rtf Ven 5 Oct 2018 - 15:12 | |
| Pour affichage ultérieur dans un MEMO_RICH. Le texte est rédigé ou lu dans n'importe quel éditeur de textes simple, ou par programme. Les balises (élémentaires) de formatage sont insérées manuellement dans le texte. Le résultat est enregistré au format .Txt Après conversion, le résultat est un fichier au format .Rtf. - Code:
-
SUB Txt2Rtf(f$,frt$) ' Conversion f$ (format .txt) -> frt$ (format .rtf) avec balises de formatage ' +------------------------- BALISES DU .TXT: ------------------------------+ ' | <C> et </C>: Centrage <B> </B> Gras <I> </I> Italique <S> </S> Souligné | ' | <Cx> Couleur texte avec x= N noir, R rouge, G vert, B bleu | ' | <F..fonte..> nom de police, <Tx> taille des caractères | ' +-------------------------------------------------------------------------+ DIM_LOCAL rc$, et$, ft$, en$(20), bf$(20), bc$(20) DIM_LOCAL a$,a1$,a2$,b$,c$,q$,i%,j%,k%,k1%,er$,ne,nf,nc IF LABEL("Rebc") = 0 THEN LABEL Rebc rc$ = CHR$(13)+CHR$(10) ' TABLE DES FONTES UTILISÉES (arbitraires, ajustable) ************************** bf$(0)="Calibri": bf$(1)="Arial": bf$(2)="Times New Roman": bf$(3)="Lucida Console" nf = 4: ' nombre de fontes ' TABLE DES 4 COULEURS UTILISÉES (arbitraires, ajustable) ********************** bc$(0) = "N": bc$(1) = "R": bc$(2) = "G": bc$(3) = "B" nc = 4: ' nombre de couleurs (noir, rouge, vert, bleu) et$ = "{\rtf1\ansi\ansicpg1252\deff0\deflang1036": ' En-tête RTF ' table des fontes utilisables (cf ci-dessus) et$ = et$ + "{\fonttbl" et$ = et$ + "{\f0\fnil\fcharset0 "+bf$(0)+";}" et$ = et$ + "{\f1\fnil\fcharset0 "+bf$(1)+";}" et$ = et$ + "{\f2\fnil\fcharset0 "+bf$(2)+";}" et$ = et$ + "{\f3\fnil\fcharset0 "+bf$(3)+";}" et$ = et$ + "}" + rc$ ' table des couleurs utilisables et$ = et$ + "{\colortbl ;\red255\green0\blue0;\red0\green176\blue80;" et$ = et$ + "\red0\green77\blue187;}" + rc$ ' généralités et$ = et$ + "{\*\generator Msftedit 5.41.21.2510;}" et$ = et$ + "\viewkind4\uc1\pard\sl240\slmult1\lang12\f0\fs22 " ft$ = "\pard\sa200\sl276\slmult1\par" + rc$ + "}" ' BALISES (Centré ou Couleur, Gras, Italique, Souligné, Fonte, Taille) a$ = "<C,<B,<I,<S,<F,<T,</C,</B,</I,</S" ne = 0 k% = INSTR(a$, ",") WHILE k% > 0 ne = ne+1: en$(ne)= LEFT$(a$, k%-1) a$ = RIGHT_POS$(a$,k%+1): k% = INSTR(a$, ",") END_WHILE ne = ne+1: en$(ne) = a$ FILE_OPEN_READ 1, f$: FILE_OPEN_WRITE 2, frt$ FILE_WRITELN 2, et$ WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$ Rebc: k% = INSTR(a$, "<") IF k% > 0 b$ = MID$(a$, k%+1, 500): k1% = INSTR(b$, ">") IF k1% > 0 a1$ = LEFT$(a$, k%-1): a2$ = RIGHT_POS$(b$,k%+1) b$ = LEFT$(b$, k1%-1): ' balise q$ = "" IF LEN(b$) > 1 THEN q$ = UPPER$(RIGHT$(b$, LEN(b$)-1)): ' argument FOR i% = 1 TO ne c$ = MID$(en$(i%),2,2) IF UPPER$(LEFT$(b$, LEN(c$))) = c$ THEN EXIT_FOR NEXT i% er$ = "" SELECT i% CASE 1: ' <C> centrage ou <Cx> couleur IF q$ = "" er$ = "\pard\sl240\slmult1\qc ": ' centré ELSE FOR j% = 0 TO nc-1 IF UPPER$(q$) = bc$(j%) THEN EXIT_FOR NEXT j% er$ = "\cf"+STR$(j%)+" ": ' couleur caractères END_IF CASE 2: ' <B> gras er$ = "\b " CASE 3: ' <I> italique er$ = "\i " CASE 4: ' <S> souligné er$ = "\ul " CASE 5: ' <F..fonte..> police FOR j% = 0 TO nf-1 IF UPPER$(q$) = UPPER$(bf$(j%)) THEN EXIT_FOR NEXT j% er$ = "\f"+STR$(j%)+" " CASE 6: ' <Tx> taille fonte er$ = "\fs"+STR$(2*VAL(q$))+" " CASE 7: ' </C> fin de centrage i% = 37 er$ = "\par"+rc$+"\pard\sl240\slmult1 " CASE 8: ' </B> fin gras er$ = "\b0 " CASE 9: ' </I> fin italique er$ = "\i0 " CASE 10: ' </S> fin souligné er$ = "\ulnone " END_SELECT a$ = a1$ + er$ + a2$ GOTO Rebc END_IF END_IF IF i% <> 37 THEN a$ = a$ + "\par" FILE_WRITELN 2, a$ END_WHILE FILE_CLOSE 1 FILE_WRITELN 2,ft$: FILE_CLOSE 2 END_SUB | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Sam 27 Oct 2018 - 12:12 | |
| Je constate que personne ne t'a répondu. C'est pourtant, au fond, un truc superbe que tu as fait là. Le problème, je crois, c'est qu'on pénètre dans un domaine assez spécialisé où il faut bien s'y connaître. J'ai été très intéressé par le chapitre que tu as initié sur le fonctionnement des memo_rich et j'aurai bien voulu en faire une sorte de traitement de texte genre wordpad, mais fait en langage panoramic. Le problème, c'est que c'est excessivement compliqué ! Je suppose que ça a un nom, ce code ou ce langage avec plein de {...}, qu'il faut utiliser pour faire fonctionner un memo_rich. Comment ça s'appelle ? Que je m'instruise... Merci d'avance pour la réponse ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Conversion texte en rtf Sam 27 Oct 2018 - 15:12 | |
| Salut jj ! Si personne ne m'a répondu c'est que c'était parfait dès le départ, donc pas de questions ! Le format, vieux comme le monde (enfin... presque), c'est le Rich Text Format (RTF), utilisé en particulier par Wordpad (livré avec Windows: write.exe), et finalement assez puissant pour des mises en forme (on peut même intégrer des images). Je suis justement en train de me coder un petit traitement de textes perso qui utilise ce format (d'accord, ça fait double emploi avec wordpad, en plus simple, mais c'est pour le plaisir). Mais j'utilise pour ça les fonctions RichEdit très puissantes de KGF.dll, regarde dans sa doc (et Klaus est enfin de retour). On peut sûrement le faire en pur Panoramic, mais c'est assez compliqué. Le format RTF ressemble un peu au HTML, avec le principe des balises de mise en forme. Sur internet ce n'est pas la doc qui manque sur le format. Par exemple: http://www.biblioscape.com/rtf15_spec.htm (en british...) PS Finalement, toutes ces docs sont extrêmement compliquées, il y a un nombre phénoménal de balises et on s'y perd vite. Le mieux c'est peut-être de rédiger des documents-types simples dans Wordpad, avec différents types d'enrichissement de texte, de les enregistrer (en .rtf), et de les relire dans notepad sous forme de texte pur, pour voir les balises générées pour chaque cas. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Sam 27 Oct 2018 - 17:01 | |
| Wouuu ! En effet, dur-dur ! Surtout en anglais ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Conversion texte en rtf Sam 27 Oct 2018 - 17:50 | |
| T'as raison, c'est quasi inutilisable, bien trop compliqué. J'en avais trouvé un bien plus clair, en français je crois, mais j'ai eu un problème et j'ai perdu le lien. Je vais essayer de le retrouver. Ça c'est déjà plus clair, et en français: https://www.supinfo.com/articles/single/4467-format-rtf | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Conversion texte en rtf Dim 28 Oct 2018 - 12:32 | |
| je serai bien intéressé aussi pour réaliser mon aide sur PanExpress. Mais c'est vraiment pas facile à aborder. Mais sait-on jamais...
Il faut que je me documente aussi sur tout çà ! | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Dim 28 Oct 2018 - 19:24 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Conversion texte en rtf Dim 28 Oct 2018 - 19:41 | |
| Ce n'est pas très compliqué si on n'utilise que les balises de base toutes simples, ce qui est le cas général pour nos applications: Police, taille, couleur Enrichissements: gras (\b...\b0) italique (\i...\i0) souligné (\ul...\ulnone) Sauts de ligne, paragraphes Il existe une foultitude d'autres balises, comme vous pouvez voir dans la doc, mais qui en principe ne nous servent à rien.
Le plus délicat peut-être c'est de définir l'en-tête, mais comme je disais plus haut il suffit de rédiger un document-type dans Wordpad, de l'enregistrer en rtf, et de le relire dans Notepad (en format texte simple) pour voir ce qui a été généré, et s'en inspirer.
Bon courage les amis !
@Minibug Pour ton usage, ce serait sans doute plus facile à réaliser en format Html, avec le même principe de balises, mais c'est bien plus simple à manipuler et tu as plein de possibilités de mise en forme. Et tu peux ensuite afficher le résultat dans un Hviewer. | |
| | | Contenu sponsorisé
| Sujet: Re: Conversion texte en rtf | |
| |
| | | | Conversion texte en rtf | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |