La modération vous a écrit: Titre modifié pour plus de clarté : veillez à éviter les anglicismes !
Bonjour,
j'ai réalisé une macro qui permet de convertir les pages d'un fichier de présentation Odp en autant de pages Html en utilisant un codage SVG qui permet une conservation rigoureusement exacte au pixel près des pages Impress (Par exemple tous les diaporamas du site h**p://etc-etc.fr sont en html/SVG réalisés à partir de présentations Impress grâce à cette macro). J'ai appelé ce projet SSS (SVG Slide Show).
Le résultat avec SSS est totalement différent de l'exportation Html de LibreOffice/OpenOffice qui ne fait que réaliser des images .jpg des pages du diaporama. SSS permet d'utiliser des liens, de réaliser des animations, de sélectionner des images ou du texte : les pages obtenues sont de véritables pages Html respectant au pixel près le rendu sous Impress.
Les principales difficultés ont été résolues, tout est maintenant presque terminé et je souhaiterais pouvoir diffuser mon travail qui pourrait, je pense, intéresser des utilisateurs de LibreOffice/OpenOffice désireux de réaliser un diaporama diffusable sur internet sans passer par la solution PDF ; il reste cependant un problème qui ne doit pas être insoluble mais qui me tient tête malgré toutes les recherches et les tentatives effectuées !
J'ai besoin de pouvoir accéder aux différents fichiers-images utilisés dans le diaporama pour les extraire ; à priori, rien de bien compliqué, il suffit de les chercher dans le DocumentStorage du document :
Code : Tout sélectionner
Dim Document As Object, Pictures As Object
Dim a As String, i As Integer
Document = ThisComponent
Pictures = Document.GetDocumentStorage().getByName("Pictures")
For i = 0 To UBound(Pictures.ElementNames)
a = a & Pictures.ElementNames(i) & Chr(10)
Next
MsgBox a
Code : Tout sélectionner
10000200000000100000001028D3E9853668BCDE.gif
100006A20000018D0000018DB3B6DC61F342ADE9.svg
... etc...
Code : Tout sélectionner
vnd.sun.star.GraphicObject:10000200000000100000001028D3E9853668BCDE
Sauf que ... tout ceci n'est valable que si un enregistrement du document a été réalisé dans sa totalité au préalable !
En effet, si on modifie une page en ajoutant une image ou si on modifie des puces de texte en utilisant une puce graphique de type "carré" ou "flèche" ou si on modifie un fond de page ou d'élément en utilisant un nouveau bitmap ... etc ... alors les bitmaps ajoutés restent inconnus dans le DocumentStorage tant qu'un enregistrement complet du document n'a pas été réalisé.
Ceci impose, lorsqu'on veut faire un test SSS sur une page modifiée, de devoir tout enregistrer avant de pouvoir effectuer le test. Pour un document d'une centaine de pages, c'est un peu frustrant de devoir perdre quelques dizaines de secondes pour pouvoir effectuer un test de SSS sur une page alors que les images responsables sont visibles, donc ont été chargées et doivent donc bien exister quelque part dans le document... mais où ?
J'ai essayé des fonctions peu ou pas documentées et j'ai abouti au mieux à rien et au pire à des plantages : Document.StoreToStorage(), Document.SwitchToStorage etc ...
Quelle est la solution à ce problème qui permette de réaliser une mise à jour du Document.DocumentStorage pour la partie "Pictures" après l'ajout d'une nouvelle image sans devoir tout enregistrer ? Car cette solution doit bien exister !
Merci d'avance pour toute suggestion à ce sujet ...