Transformer 1 fichier txt en html

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Transformer 1 fichier txt en html

Message par Guimauve »

J'en assé de coder moi-même directement en html. J'ai fait un petit programme pour transformer un fichier txt en fichier html. Ça marche bien sauf que j'ai des problèmes avec la mise en forme. Je voudrais remplacer les espaces qui se trouvent en début de ligne par " " . Si quelqu'un connaît l'astuce sur comment on fait pour remplacer seulement les espaces qui se trouve en début de chaîne ça serait sympa.
Pour le moment je fais comme ça et c'est pas très fort. :(
Je suis sûr que c'est possible de faire mieux.

Merci à l'avance.

A+
Guimauve

Code : Tout sélectionner

If Left(htmlcode$, 3) = Chr(32) + Chr(32) + Chr(32)
     htmlcode$ = "   " + RTrim(htmlcode$)
EndIf
               
If Left(htmlcode$, 2) = Chr(32) + Chr(32)
     htmlcode$ = "  " + RTrim(htmlcode$)
EndIf
               
If Left(htmlcode$, 1) = Chr(32)
     htmlcode$ = " " + RTrim(htmlcode$)
EndIf
La version la moins bogué de la procedure en question :

Code : Tout sélectionner

Dim Texte$(5000)

fichiertxt$ = "test.txt"

Procedure.s LoadTxtSaveHtml(fichiertxt$)
     
     If OpenFile(0, fichiertxt$) = 0
          ; Le fichier txt n'a pas pu être ouvert, message d'erreur.
          MessageRequester("Programmenom$", "Errortxt01$", #MB_ICONWARNING)
          
     Else
          
          Repeat
               
               ligne_de_txt$ = ReadString()
               Texte$(n) = ligne_de_txt$ + "<br>"
               n = n + 1
               
          Until Eof(0)
          
          CloseFile(0)
     EndIf
     
     If FileSize("test.html") > - 1
          DeleteFile("test.html")
     EndIf
     
     If OpenFile(1,"test.html") = 0
          ; Le fichier html n'a pas pu être ouvert, message d'erreur.
          MessageRequester("Programmenom$", "Errortxt01$", #MB_ICONWARNING)
          
     Else
          WriteStringN("<html>")
          WriteStringN("<head>")
          WriteStringN("<title>" + "test" + "</title>")
          WriteStringN("<meta http-equiv=" + "Content-Type" + "content=" + "text/html; charset=iso-8859-1" + ">")
          WriteStringN("</head>")
          color = GetSysColor_(#COLOR_3DFACE)
          red = Red(color)
          green = Green(color)
          blue = Blue(color)
          WriteStringN("<body bgcolor=" + Chr(34) + Hex(red) + Hex(green) + Hex(blue) + Chr(34) + " leftmargin=" + Chr(34) + "3" + Chr(34) + " topmargin=" + Chr(34) + "3" + Chr(34) + " marginwidth=" + Chr(34) + "3" + Chr(34) + " marginheight=" + Chr(34) + "3" + Chr(34) + ">")
          WriteStringN("<table width=" + Chr(34) + "-230" + Chr(34) + " border=" + Chr(34) + "0" + Chr(34) + " cellpadding=" + Chr(34) + "0" + Chr(34) + " cellspacing=" + Chr(34) + "0" + Chr(34) + ">")
          WriteStringN("<!--DWLayoutTable-->")
          WriteStringN("<tr>")
          WriteStringN("<td width=" + Chr(34) + "-230" + Chr(34) + " height=" + Chr(34) + "100" + Chr(34) + " valign=" + Chr(34) + "top" + Chr(34) + "><div align=" + Chr(34) + "justify" + Chr(34) + "><font size=" + Chr(34) + "1" + Chr(34) + " face=" + Chr(34) + "Verdana, Arial, Helvetica, sans-serif" + Chr(34) + ">")
          
          Repeat
               htmlcode$ = Texte$(m)
               If Right(htmlcode$, 9) = "</strong>"
                    htmlcode$ = htmlcode$ + "<br>"
               EndIf
               
               If Left(htmlcode$, 3) = Chr(32) + Chr(32) + Chr(32)
                    htmlcode$ = "&nbsp;&nbsp;&nbsp;" + RTrim(htmlcode$)
               EndIf
               
               If Left(htmlcode$, 2) = Chr(32) + Chr(32)
                    htmlcode$ = "&nbsp;&nbsp;" + RTrim(htmlcode$)
               EndIf
               
               If Left(htmlcode$, 1) = Chr(32)
                    htmlcode$ = "&nbsp;" + RTrim(htmlcode$)
               EndIf
               
               WriteStringN(htmlcode$)
               m = m + 1
          Until m = n
          
          WriteStringN("</font></div></td>")
          WriteStringN("</tr>")
          WriteStringN("</table>")
          WriteStringN("</body>")
          WriteStringN("</html>")
          CloseFile(1)
     EndIf
     
EndProcedure
Invité

Message par Invité »

ben ton problem est simple , c'est ta methode qui n'est pas clair !!

moi si j'avais a faire un truc du genre c'est au moment de la lecture du *.txt
que je ferai la conversion

lorque tu fais
fichiertxt$ = "test.txt"

Procedure.s LoadTxtSaveHtml(fichiertxt$)

If OpenFile(0, fichiertxt$) = 0
; Le fichier txt n'a pas pu être ouvert, message d'erreur.
MessageRequester("Programmenom$", "Errortxt01$", #MB_ICONWARNING)

Else

Repeat

ligne_de_txt$ = ReadString()

;***** ici ***** j'analyserai la ligne
;genre :

for a=0 to len( ligne_de_txt$) :; pour chaque caractere de la ligne
if Mid( ligne_de_txt$, a, 1) =chr(32):; on regarde si un espace (ou autre)
ici ecrit le caractere html correspondant dans l'autre fichier
avec un un write
endif

mais moi perso je lirai le fichier octet par octet
puis suivant si l'octet est entre 33 et 255 c'est un caractere
donc on le reecrit tel quel
si plus petit que 33 c'est un code html a inserer a la place
32 un espace 13 (ou 11 je sais pus) un retour chario ect ....



; tu peut ouvrir plusieur fichier en lecture et ecriture


;*********************************

Texte$(n) = ligne_de_txt$ + "<br>"
n = n + 1

Until Eof(0)

CloseFile(0)
EndIf
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Code : Tout sélectionner

Longueur1 = Len(phrase$)
phrase$ = LTrim(phrase$)
longueur2 = Len(phrase$)

For n = Longueur2 To longueur1 - 1
  phrase$ = "&nbsp;" + phrase$
Next
code extrait de mon logiciel aide qui transforme des fichiers textes en page html.
si tu veux le code complet, hésite pas à le demander :wink:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Code : Tout sélectionner

Structure MonChar 
  Char.b 
EndStructure 

#Txt = 0
#Html = 1
#Memoire = 0
#Vrai = 1
#Faux = 0

Procedure.s LoadTxtSaveHtml(fichiertxt$) 
          If OpenFile(#Txt, fichiertxt$) = 0 
                    MessageRequester("Erreur", "Le fichier n'a pu être ouvert", #MB_ICONWARNING) 
                    Goto FinLTSH
          Else
                    LongueurTxt.l = FileSize(fichiertxt$)
                    MemoryID = AllocateMemory(#Memoire, LongueurTxt, 0) 
                    ReadData(MemoryID, LongueurTxt) 
                    CloseFile(#Txt) 
          EndIf
          fichiertxt$ = Mid(fichiertxt$, 1, Len(fichiertxt$)-3) + "htm"
          If CreateFile(#Html,fichiertxt$) = 0 
                    MessageRequester("Erreur", "Probème avec le fichier de sortie HTML", #MB_ICONWARNING) 
                    Goto FinLTSH
          Else 
                    WriteStringN("<html>") 
                    WriteStringN("<head>") 
                    WriteStringN("<title>" + "test" + "</title>") 
                    WriteStringN("<meta http-equiv=" + "Content-Type" + "content=" + "text/html; charset=iso-8859-1" + ">") 
                    WriteStringN("</head>") 
                    color = GetSysColor_(#COLOR_3DFACE) 
                    red = Red(color) 
                    green = Green(color) 
                    blue = Blue(color) 
                    WriteStringN("<body bgcolor=" + Chr(34) + Hex(red) + Hex(green) + Hex(blue) + Chr(34) + " leftmargin=" + Chr(34) + "10" + Chr(34) + " topmargin=" + Chr(34) + "10" + Chr(34) + " marginwidth=" + Chr(34) + "10" + Chr(34) + " marginheight=" + Chr(34) + "10" + Chr(34) + ">") 
                    WriteStringN("<table width=" + Chr(34) + "100%" + Chr(34) + " border=" + Chr(34) + "0" + Chr(34) + " cellpadding=" + Chr(34) + "0" + Chr(34) + " cellspacing=" + Chr(34) + "0" + Chr(34) + ">") 
                    WriteStringN("<!--DWLayoutTable-->") 
                    WriteStringN("<tr>") 
                    WriteStringN("<td width=" + Chr(34) + "100%" + Chr(34) + " height=" + Chr(34) + "100" + Chr(34) + " valign=" + Chr(34) + "top" + Chr(34) + "><div align=" + Chr(34) + "justify" + Chr(34) + "><font size=" + Chr(34) + "4" + Chr(34) + " face=" + Chr(34) + "Verdana, Arial, Helvetica, sans-serif" + Chr(34) + " color=#206020" + ">") 
                    *PointeurTxt.MonChar = MemoryID
                    Espace_HTML$ = ""
                    Ligne_de_txt$ = ""
                    Debut.b = #Vrai
                    For t.l = 1 To LongueurTxt
                              If Debut = #Vrai
                                        If *PointeurTxt\Char = 32     ; ESPACE
                                                  Espace_HTML$ + "&nbsp;"
                                        EndIf
                                        If *PointeurTxt\Char = 9     ; TABULATION
                                                  For r.l = 1 To 10
                                                            Espace_HTML$ + "&nbsp;"
                                                  Next
                                        EndIf
                                        If *PointeurTxt\Char = 13     ; A LA LIGNE
                                                  WriteStringN("<div>&nbsp;</div>")
                                        EndIf
                                        If *PointeurTxt\Char > 32     ; TEXTE
                                                  Debut = #Faux
                                        EndIf
                              EndIf
                              If Debut = #Faux
                                        If *PointeurTxt\Char = 13     ; A LA LIGNE
                                                  WriteStringN("<div>" + Espace_HTML$ + Trim(Ligne_de_txt$) + "</div>")
                                                  Espace_HTML$ = ""
                                                  Ligne_de_txt$ = ""
                                                  Debut.b = #Vrai
                                        EndIf
                                        If *PointeurTxt\Char >= 32    ; ON RECUPERE LE TEXTE
                                                  Ligne_de_txt$ + Chr(*PointeurTxt\Char)
                                                  If t = LongueurTxt     ; FIN DU FICHIER TEXTE
                                                            WriteStringN("<div>" + Espace_HTML$ + Trim(Ligne_de_txt$) + "</div>")
                                                  EndIf
                                        EndIf
                              EndIf
                              *PointeurTxt + 1
                    Next 
                    WriteStringN("</td>") 
                    WriteStringN("</tr>") 
                    WriteStringN("</table>") 
                    WriteStringN("</body>") 
                    WriteStringN("</html>") 
                    CloseFile(#Html) 
          EndIf
FinLTSH:
EndProcedure
      
          LoadTxtSaveHtml(OpenFileRequester("Fichier texte a convertir en HTML","" , "Fichiers Textes|*.txt", 0) )
End
J ai un peu travaille sur ton code... Il va certainement me servir bientot...
:mad:
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

En fait il y a 2 raisons pour laquelle je travaille là dessus.

1re J'ai envie de me faire un éditeur html qui va automatiser
la creation d'un site web complet en transformant des fichiers textes
en fichier html.

2e Oui le programme d'aide du Soldat Inconnu est très bien
sauf que je me demande si c'est vraiment nécessaire d'avoir un aide
aussi élaborer quand l'aide ne contient que 4 ou 5 petites rubriques
au maximum.

Moi j'aimerais bien avoir une version allégé, sans fonction de
recherche, ni bouton de navigation et un interface très minimale.
C'est pour ça que j'aimerais faire mon petit programme d'aide.

Merci Soldat pour ton bout de code, je vais voir si je peux l'adapter
pour mon programme.

A+
Guimauve
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Erix14

Euh chapeau je viens de tester et ça marche bien.

Je pense que je vais devoir étudier la notion des pointeurs,
des structures et de l'utilisation de la mémoire.

Merci à toi.

Correction il y a un petit bogue, les caratères spéciaux disparaissent pendant la conversion. Moi je ne comprends pas vraiment la manipulation de la mémoire et donc je ne sais où l'information se perd. On pourrait peut-être profiter de l'occasion pour remplacer ces caratères par leurs équivalent en html. Voiçi la liste :

Code : Tout sélectionner

< 		<
> 		>
& 		&
" 		"
&nbsp; 		
&reg; 		®
&copy; 		©
<sup>TM</sup>	TM
&pound; 		£
&cent; 		¢
&Agrave; 	À
&Aacute; 	Á
&Acirc; 		Â
&Atilde; 		Ã
&Auml; 		Ä
&Aring; 		Å
&AElig; 		Æ
&Ccedil; 		Ç
&Egrave; 	È
&Eacute; 	É
&Ecirc; 		Ê
&Euml; 		Ë
&Igrave; 		Ì
&Iacute; 		Í
&Icirc; 		Î
&Iuml; 		Ï
&ETH; 		Ð
&Ntilde; 		Ñ
&Ograve; 	Ò
&Oacute; 	Ó
&Ocirc; 		Ô
&Otilde; 		Õ
&Ouml; 		Ö
&Oslash; 	Ø
&Uacute; 	Ú
&Ugrave; 	Ù
&Ucirc; 		Û
&Uuml; 		Ü
&Yacute; 	Ý
&THORN; 	Þ
&szlig; 		ß
&aacute; 	á
&agrave; 	à
&acirc; 		â
&atilde; 		ã
&auml; 		ä
&aring; 		å
&aelig; 		æ
&ccedil; 		ç
&egrave; 	è
&eacute; 	é
&ecirc; 		ê
&euml; 		ë
&igrave; 		ì
&iacute; 		í
&iuml; 		ï
&eth; 		ð
&ntilde; 		ñ
&oacute; 	ó
&ograve; 	ò
&otilde; 		õ
&ocirc; 		ô
&ouml; 		ö
&oslash; 		ø
&ugrave; 	ù
&uacute; 	ú
&ucirc; 		û
&uuml; 		ü
&yacute; 		ý
&thorn; 		þ
&yuml; 		ÿ
&para; 		¶
&frac14; 		¼
&frac12; 		½
&frac34; 		¾
&iquest; 		¿
&iexcl; 		¡
&sup1; 		¹
&sup2; 		²
&sup3; 		³
&plusmn; 	±
&deg; 		°
&micro; 		µ
&middot; 	·
&laquo; 		«
&raquo; 		»
&ordf; 		ª
&sect; 		§
&brvbar; 		¦
&yen; 		¥
&curren; 		¤
&macr; 		¯
&cedil; 		¸
&acute; 		´
&not; 		¬
A+
Guimauve
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Mon pointeur de byte est de type signé (-128 à 127)
donc les ASCII > 127 ne sont pas traité
Voici la correction :

Code : Tout sélectionner

Structure MonChar 
  Char.b 
EndStructure 

#Txt = 0
#Html = 1
#Memoire = 0
#Vrai = 1
#Faux = 0

Procedure.s LoadTxtSaveHtml(fichiertxt$) 
          If OpenFile(#Txt, fichiertxt$) = 0 
                    MessageRequester("Erreur", "Le fichier n'a pu être ouvert", #MB_ICONWARNING) 
                    Goto FinLTSH
          Else
                    LongueurTxt.l = FileSize(fichiertxt$)
                    MemoryID = AllocateMemory(#Memoire, LongueurTxt, 0) 
                    ReadData(MemoryID, LongueurTxt) 
                    CloseFile(#Txt) 
          EndIf
          fichiertxt$ = Mid(fichiertxt$, 1, Len(fichiertxt$)-3) + "htm"
          If CreateFile(#Html,fichiertxt$) = 0 
                    MessageRequester("Erreur", "Probème avec le fichier de sortie HTML", #MB_ICONWARNING) 
                    Goto FinLTSH
          Else 
                    WriteStringN("<html>") 
                    WriteStringN("<head>") 
                    WriteStringN("<title>" + "test" + "</title>") 
                    WriteStringN("<meta http-equiv=" + "Content-Type" + "content=" + "text/html; charset=iso-8859-1" + ">") 
                    WriteStringN("</head>") 
                    color = GetSysColor_(#COLOR_3DFACE) 
                    red = Red(color) 
                    green = Green(color) 
                    blue = Blue(color) 
                    WriteStringN("<body bgcolor=" + Chr(34) + Hex(red) + Hex(green) + Hex(blue) + Chr(34) + " leftmargin=" + Chr(34) + "10" + Chr(34) + " topmargin=" + Chr(34) + "10" + Chr(34) + " marginwidth=" + Chr(34) + "10" + Chr(34) + " marginheight=" + Chr(34) + "10" + Chr(34) + ">") 
                    WriteStringN("<table width=" + Chr(34) + "100%" + Chr(34) + " border=" + Chr(34) + "0" + Chr(34) + " cellpadding=" + Chr(34) + "0" + Chr(34) + " cellspacing=" + Chr(34) + "0" + Chr(34) + ">") 
                    WriteStringN("<!--DWLayoutTable-->") 
                    WriteStringN("<tr>") 
                    WriteStringN("<td width=" + Chr(34) + "100%" + Chr(34) + " height=" + Chr(34) + "100" + Chr(34) + " valign=" + Chr(34) + "top" + Chr(34) + "><div align=" + Chr(34) + "justify" + Chr(34) + "><font size=" + Chr(34) + "4" + Chr(34) + " face=" + Chr(34) + "Verdana, Arial, Helvetica" + Chr(34) + " color=#206020" + ">") 
                    *PointeurTxt.MonChar = MemoryID
                    Espace_HTML$ = ""
                    Ligne_de_txt$ = ""
                    Debut.b = #Vrai
                    For t.l = 1 To LongueurTxt
                              If *PointeurTxt\Char > 0
                                        c.l = *PointeurTxt\Char
                              Else
                                        c.l = 128 | (*PointeurTxt\Char & 127)
                              EndIf
                              If Debut = #Vrai
                                        If c = 32     ; ESPACE
                                                  Espace_HTML$ + "&nbsp;"
                                        EndIf
                                        If c = 9     ; TABULATION
                                                  For r.l = 1 To 10
                                                            Espace_HTML$ + "&nbsp;"
                                                  Next
                                        EndIf
                                        If c = 13     ; A LA LIGNE
                                                  WriteStringN("<div>&nbsp;</div>")
                                        EndIf
                                        If c > 32     ; TEXTE
                                                  Debut = #Faux
                                        EndIf
                              EndIf
                              If Debut = #Faux
                                        If c = 13     ; A LA LIGNE
                                                  WriteStringN("<div>" + Espace_HTML$ + Trim(Ligne_de_txt$) + "</div>")
                                                  Espace_HTML$ = ""
                                                  Ligne_de_txt$ = ""
                                                  Debut.b = #Vrai
                                        EndIf
                                        If c >= 32    ; ON RECUPERE LE TEXTE
                                                  Ligne_de_txt$ + Chr(c)
                                                  If t = LongueurTxt     ; FIN DU FICHIER TEXTE
                                                            WriteStringN("<div>" + Espace_HTML$ + Trim(Ligne_de_txt$) + "</div>")
                                                  EndIf
                                        EndIf
                              EndIf
                              *PointeurTxt + 1
                    Next 
                    WriteStringN("</td>") 
                    WriteStringN("</tr>") 
                    WriteStringN("</table>") 
                    WriteStringN("</body>") 
                    WriteStringN("</html>") 
                    CloseFile(#Html) 
          EndIf
FinLTSH:
EndProcedure
      
          LoadTxtSaveHtml(OpenFileRequester("Fichier texte a convertir en HTML","" , "Fichiers Textes|*.txt", 0) )
End
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

tu sais qu'avec internet explorer, tu n'as pas besoin de traduire les caractères spéciaux, ça marche très bien avec :roll:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Oui je sais sauf que si je fais un site web et que je l'upload chez FreeWebs.com par exemple, ces caratères ne seront pas tenu en compte et seront remplacé par d'autre. Je sais plus par quel.

J'ai eu ce problème lorsque j'ai mis mon CV en ligne à la mi-janvier chez FreeWebs. J'ai dû faire la correction manuellement en ligne.

Merci à tout le monde.

A+
Guimauve
Invité

Message par Invité »

cela provient surement de la facon dont tu upload tes fichiers
en generale lorque tu veux pas que ton prestataire modifie tes fichiers
ils faut les envoyer en mode ASCII (parametrage de ton prg de FTP)
et pas en mode BINAIRE !! :)
Répondre