

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
1 message in org.openoffice.fr.progUtiliser les "streams"| From | Sent On | Attachments |
|---|---|---|
| Philippe Allart | Apr 8, 2008 6:20 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread 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







