Page 1 sur 1
Importer un fichier dans un Rich Text

Publié:
16 Mars 2010 à 15:54
par fripouille76
Salut
Je me permet de vous poser la question suivante à tout hasard si vous avez déjà fait ce genre de chose.
voila, j'essaye D'importer un fichier HTML dans un champ text rich. via lotusScript. (j'arrive à le faire en passant par formule, mais ca me donne pas entière satisfaction)
- Concretement j'ai un agent sur le PostOpen de mon Masque, qui génère le fichier HTML et le dépose dans le répertoire (Notes/Data)
- Ensuite j'aimerai simplement récupérer ce fichier et l'afficher dans mon champs TextRich.
j'ai essayer avec le uidoc.import , en ayant fait un uidoc.gotofield avant mais il me dit que j'ai pas le droit d'utiliser cette commande. (surement que mon doc n'est pas encore réellement disponible)
avez vous une idée ou une piste que je pourrai tenter, merci de votre aide

Publié:
16 Mars 2010 à 16:00
par Michael DELIQUE
salut
tu as pensé a lire ton fichier THM et a l'inserer comme du texte ?

Publié:
16 Mars 2010 à 16:10
par fripouille76
En faite si je pouvais même eviter de créer le fichier ca m'arrangerai, mais j'ai déjà essayer d'envoyer directement mon code HTML dans le champs mais il est pas traduit. (j'ai beau mettre l'option du champs HTML)...rien n'y fait..ou alors je m'y prend mal.
si t'as la solution, je suis preneur michael ^^

Publié:
16 Mars 2010 à 16:13
par Michael DELIQUE
euh j'ai du mal a comprendre
tu veux afficher le code ou l'interpretation du code ?

Publié:
16 Mars 2010 à 16:17
par fripouille76
POur faire simple , j'ai un Agent qui créer un Fichier HTML avec le code que j'aimerai afficher dans mon champs Text Rich.
Mais il faut que le HTML soit interpréter par mon champ text rich.
en web ca marche bien, mais en notes, pas sur que ca fonctionne de cette facon. c'est pour ca que je passai par un fichier HTML que j'importais en formule par la suite avec un @command([fileImport])

Publié:
16 Mars 2010 à 16:22
par fripouille76
Hmmmm......j'avais pas pensé au MIME....v tenter ca tiens

Publié:
16 Mars 2010 à 16:57
par fripouille76
meme problème mon code s'affiche en text et n'est pas traduit...pouffff en même temps je maitrise pas trop le mime. Mais ca a pas l'air de résoudre mon problème !!!

Publié:
17 Mars 2010 à 08:42
par stloje
Programmer en MIME n'est pas évident. Tu peux me montrer ton code?

Publié:
17 Mars 2010 à 11:49
par fripouille76
j'ai laissé tomber le Mime, mais c'est peut être ma seule solution

.
Je suis reparti sur ma solution d'importer en formula, mon fichier HTML. qui pour le moment est la seule solution qui m'affiche du HTML dans mon champs Txt rich.
Si tu as un exemple de Mime je veux bien...comme tu dis c'est pas évident j'ai essayer de reprendre un bout de code de l'aide mais je pense qu'il manque pas mal de chose.
j'ai mon code dans un champs string, mais me faut juste savoir l'envoyer

Publié:
17 Mars 2010 à 14:10
par stloje
Je regarde pour mon code et je te l'envoi!

Publié:
17 Mars 2010 à 14:55
par stloje
Donc, voici le code
ATTENTION : le MIME doit se mettre dans le champ "Body" pour qu'il soit visible. Notes indique que seul ce champ a été spécialement conçu pour recevoir du MIME
à mettre dans la partie Declaration
- Code : Tout sélectionner
%REM
Cette classe contient les fonctions pouvant être exécutées en MIME
body : entité MIME
header : entête de l'entité MIME
stream : flux de données
InsertHeader : crée l'entête de la partie MIME
entrée :
headerType : le nom de l'entête à insérer
headerValue : la valeur de l'entête
SearchHeaderValue : recherche la valeur d'un entête
entrée : headerType : le nom de l'entête à rechercher
sortie : la valeur de l'entête trouvée, sinon vide
InsertStream : insère le texte dans le corps du message
entrée : textLine : chaîne de caractères
TruncateStream : efface le tampon créé par Stream
LinkStream : fonction qui force l'écrire de la mémoire tampon dans le corps de l'entité
CleanText : retire les caractères accentués et les transforme en caractère ascii ou ISO
entrée : caract : chaîne de caractères à traiter
forceISOCarac : vrai si doit être transformé en ISO, sinon faux
sortie : la chaîne de caract transformée
FileAttachement : rattache un fichier au contenu MIME
entrée : fileName : le nom du fichier à rattacher
%END REM
Public Class MIMEActions
Private body As NotesMIMEEntity
Private header As NotesMIMEHeader
Private stream As NotesStream
Private session As NotesSession
Sub new (doc As NotesDocument)
Set session = New NotesSession
'on empêche temporairement la conversion du texte
session.ConvertMIME = False
Set body = doc.CreateMIMEEntity
Set stream = session.CreateStream
'il faut déclarer que le MIME est divisé en plusieurs parties
'Call Me.InsertHeader ("Content-Type", "multipart")
End Sub
Public Function insertHeader (Byval headerType As String, Byval headerValue As String) As Boolean
%REM
type de header connus
- Content-Type
%END REM
insertHeader = False
'on vérifie si l'entête existe
If searchHeaderValue (headerType) <> "" Then
'on crée l'entête
Set header = body.createHeader (headerType)
Call header.setHeaderVal (headerValue)
insertHeader = True
End If
End Function
Private Property Get searchHeaderValue (headerType As String) As String
If Not body.getNthHeader (headerType) Is Nothing Then
searchHeaderValue = body.getNthHeader (headerType).getHeaderVal ()
End If
End Property
Public Sub insertStream (textLine As String)
Call stream.WriteText(textLine)
End Sub
Public Sub truncateStream ()
Call stream.Truncate
End Sub
Public Property Get hasStreamValue As Long
hasStreamValue = stream.Bytes
End Property
Public Sub linkStream ()
'on insère le contenu du texte avant de supprimer la chaîne
Call body.setContentFromText(stream, "text/HTML;charset=ISO-8859-1", ENC_QUOTED_PRINTABLE)
Call truncateStream ()
End Sub
Public Function cleanText (Byval caract As String, Byval forceISOCaract As Boolean) As String
Dim tmp As String
Dim i As Integer
Dim debut As Boolean
Dim ISOCarac As Boolean
debut = False
For i = 1 To Len(caract)
tmp = Mid$ (caract, i, 1)
'on s'assure que les caractères ne font pas partis d'une balise HTML
If tmp = ">" Then debut = False
If tmp = "<" Then debut = True
'est-on dans une balise?
If debut = False Then
'on vérifie si on doit forcer la transformation en ISO
If forceISOCaract = True Then
'est-ce qu'il y a déjà eu l'entête de ISO?
If ISOCarac = False Then
cleanText = CleanText & "=?ISO-8859-1?Q?"
ISOCarac = True
End If
End If
If Instr(|azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN1234567890 <>;,:?./%=|, tmp) = 0 Then
cleanText = cleanText & "&#x" & Hex$ (Uni (tmp)) & ";"
Else
cleanText = cleanText & tmp
End If
End If
Next
'on termine le bloc concernant ISO
If forceISOCaract = True Then cleanText = cleanText + "?="
End Function
Public Sub fileAttachement (Byval fileName As String)
Dim strContentType As String
'set correct content types for known file types
Select Case Lcase (Strright (fileName, "."))
Case "gif"
strContentType = "image/gif"
Case "jpeg", "jpg"
strContentType = "image/jpeg"
Case Else
strContentType = "application/octet-stream"
End Select
'on crée directement le type d'entête pour éviter de l'oublier
Call Me.insertHeader ("Content-Disposition", {attachment; filename="} & fileName & {"})
If stream.Open(fileName) Then
Call body.setContentFromBytes(stream, strContentType & {; name="} & fileName & {"}, ENC_IDENTITY_BINARY)
Call stream.Close
End If
End Sub
End Class
Voici un exemple de code pour créer un élément en MIME
- Code : Tout sélectionner
Dim session As New NotesSession
Dim doc As New NotesDocument (session.CurrentDatabase)
Dim MIMEDoc As MIMEActions
doc.form = "Memo"
'on initialise la partie MIME sur le document
Set MIMEDoc = New MIMEActions (doc)
'on insère le type d'entête
Call MIMEDoc.insertHeader ("content-type", "text/html")
'maintenant, on insère le code HTML
Call MIMEDoc.insertStream ("<Table>")
Call MIMEDoc.insertStream ("<TR>")
Call MIMEDoc.insertStream ("<TD>Ceci est</TD>")
Call MIMEDoc.insertStream ("<TD>un example</TD>")
Call MIMEDoc.insertStream ("<TD>de tableau</TD>")
Call MIMEDoc.insertStream ("</TR>")
Call MIMEDoc.insertStream ("<TR>")
Call MIMEDoc.insertStream ("<TD><center>Fait via MIME</center></TD>")
Call MIMEDoc.insertStream ("</TR>")
Call MIMEDoc.insertStream ("</Table>")
'on force le code HTML dans le document
Call MIMEDoc.linkStream
Call doc.Save (True, False)

Publié:
17 Mars 2010 à 16:38
par fripouille76
NICKEL....^^
MERCI BEAUCOUP, j'ai un peu adapter Ton code mais ca marche du feu de dieu !!
adieu la génération de fichier Html hihihihihhi


Publié:
17 Mars 2010 à 16:39
par Michael DELIQUE
stloje je ne dirais qu'un mot : tips

Publié:
17 Mars 2010 à 17:31
par fripouille76
juste pour information, tous les champs text rich fonctionne pas seulement le Body, suffis juste de cocher l'option "Mime/Html" dans le deuxieme onglet du champ.
ENCORE MERCI

Publié:
18 Mars 2010 à 10:41
par stloje
L'astuce a été ajouté à une autre astuce traitant du HTML lors de l'envoi de courriel