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]

Répondre à