1 message in org.openoffice.fr.progUtiliser les "streams"
FromSent OnAttachments
Philippe AllartApr 8, 2008 6:20 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Utiliser les "streams"Actions...
From:Philippe Allart (pall@cudl-lille.fr)
Date:Apr 8, 2008 6:20:27 am
List:org.openoffice.fr.prog

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