Bonjour,
Ce post juste pour savoir si on peut maitriser l'utilisation des streams
à partir de OOoBasic.
La macro ci-dessous permet d'insérer du code html dans un document writer.
J'utilise la méthode InsertDocumentFromURL. Ca marche, mais il faut
d'abord que le code soit écrit dans un fichier, ce qui suppose de
trouver un nom temporaire, de le supprimer, etc. Je voudrais optimiser ça.
Lors de mes recherches, j'ai trouvé le service TempFile qui n'est rien
d'autre qu'un canal, avec les interfaces XInputStream et XOutputStream,
qui offrent respectivement les méthodes readBytes et writeBytes (on peut
observer tout ça avec Xray)
Et justement, le paramètre propfich() passé à InsertDocumentFromURL peut
contenir la propriété InputStream. L'idée serait donc de créer un
stream, d'envoyer le code HTML dans le stream avec writeBytes, puis de
passer l'interface InputStream à InsertDocumentFromURL avec propfich().
J'ai essayé d'envoyer le code HTML dans writeBytes, mais ça ne marche
pas. On dirait qu'il faut impérativement transformer la chaîne en un
tableau d'entiers.
Comme ça devenait trop compliqué, j'ai laissé tomber, et j'en suis resté
avec un fichier temporaire.
j'ai vu aussi qu'il existait la méthode WriteUTF qui permet d'injecter
une chaîne UTF dans un objet DataOutputStream, mais ça me fait une belle
jambe, parce que je n'ai pas trouvé comment le connecter avec un objet
DataInputStream...
Voilà ou j'en suis. Si quelqu'un a des idées, je suis preneur.
Bien librement
Ph.
--
'---------------------------------------------------------------------------------------------------
Sub InsererHTML(unCurseur as Object, contenu as String)
Dim propfich() as New com.sun.star.beans.PropertyValue
Dim URL as String
URL= ContenuVersURL("<html><head><meta http-equiv=""content-type""
content=""text/html; charset=UTF-8""</head><body>" & _
contenu & "</body></html>")
unCurseur.insertDocumentFromURL(URL, propfich())
kill(URL)
end Sub
'----------------------------------------------------------------------------------------------------
Function ContenuVersURL(contenu as String) as string
Dim f1 as Integer
Dim nomTemp as String
nomTemp = NomFichierTemporaire(".html")
f1 = Freefile
open nomTemp For Output As #f1
print #f1, contenu
Close #f1
ContenuVersURL = nomTemp
end Function
'----------------------------------------------------------------------------------------------------
Function CreerCanal() as object
CreerCanal = CreateUnoservice("com.sun.star.io.TempFile")
end function
'----------------------------------------------------------------------------------------------------
Function NomFichierTemporaire(ext as String) as String
Dim stream as Object
'
' Astuce pour obtenir un nom de fichier temporaire
'
stream = CreerCanal()
NomFichierTemporaire = stream.Uri & ext
End Function
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]