Différences de programmation entre AOO et LibO

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Différences de programmation entre AOO et LibO

Message par bm92 »

Bonjour,

Ce sujet signale les différences de programmation (Basic, API, etc.) entre AOO et LibO, à fonctionnalité identique.
En d'autres termes, ce sujet peut vous aider si vous écrivez des macros ou extensions utilisables indifféremment avec LibreOffice ou Apache OpenOffice.
On ne traitera donc pas ici de l'impact API des fonctionnalités propres à une seule des deux suites.

Ce fil est verrouillé afin de conserver une lisibilité optimale.

Table des matières
  1. Fonction pour Calc modifiant une autre cellule - 23 Jan 2015
  2. Configuration de LibreOffice et propriété FormulaLocal - 07 Déc 2013
  3. Zones nommées restreintes à la feuille - 21 Août 2015
  4. Contrôles champ de Date et champ Horaire - 12 Déc 2013
  5. Contrôle Compteur (SpinButton) dans un dialogue - 27 Mars 2015
  6. Extensions comportant une barre d'outils - 07 Déc 2013
  7. Différences du Python embarqué - 17 Jan 2016
  8. Envoi de courriel - 21 Août 2015
  9. DocumentInfo est obsolète - 15 Juin 2015
  10. Données de configuration - 21 Août 2015
  11. Arguments en ligne de commande - 11 Août 2014
  12. Documentation IDL du SDK - 23 Jan 2015
  13. Multi-sélection de fichier avec le service FilePicker - 27 Mars 2018
  14. Insertion d'image liée - 24 oct 2018
Dernière modification par bm92 le 17 janv. 2016 10:10, modifié 10 fois.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

[OXT] Extensions comportant une barre d'outils

Message par bm92 »

Apache OpenOffice 4.0 utilise une nouvelle manière de déclarer une barre d'outils dans un fichier d'extension.
Il en résulte que les extensions Apache OpenOffice 4.0 comportant une barre d'outils doivent être construites différemment de celles des versions précédentes ou de LibreOffice (le fichier extension est incompatible).
Une extension contruite avec l'ancienne méthode peut s'installer sur Apache OpenOffice 4.0 mais la barre d'outils n'est pas affichée.
Une extension sans barre d'outils n'est pas impactée par cette évolution.

Les outils BasicAddonBuilder et Extension Compiler ont été mis à jour pour produire les deux versions d'extensions.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

[Calc] Configuration LibreOffice et propriété FormulaLocal

Message par bm92 »

LibreOffice 3.5 permet de configurer via le menu Outils > Options > LibreOffice Calc > Formule :
  • la méthode d'adressage de cellule
  • l'utilisation du nom anglais des fonctions
  • le caractère séparateur d'arguments, de colonne et de ligne de matrice
Ceci a des conséquences sur le contenu de la propriété FormulaLocal d'une cellule. Explications dans le message N'utilisez plus FormulaLocal.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

[Calc] Zones nommées restreintes à la feuille

Message par bm92 »

Les zones nommées restreintes à la feuille sont supportées par les deux suites, mais avec des API différentes.

LibreOffice 3.4 :
Au niveau de la feuille, une propriété NamedRanges permet d'accèder aux zones nommées restreintes à celle-ci.

Apache OpenOffice 4.0 :
Au niveau du document, propriété NamedRange, ajout de l' interface com.sun.star.sheet.XNamedRanges2; et pour une zone nommée, ajout de l'interface XNamedRange2, et de la structure com.sun.star.sheet.RangeScopeName.
Dernière modification par bm92 le 21 août 2015 08:43, modifié 1 fois.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

[Python] Différences du Python embarqué

Message par bm92 »

Apache OpenOffice 4.1.1 embarque la version 2.7.6 de Python.
LibreOffice 4.4.5 embarque la version 3.3.3 de Python.
Le codage est éventuellement à adapter, voir Porting to Python 3.
Un script utilisant les particularités de la version 3 de Python est incompatible avec ApacheOpenOffice
Un script utilisant des fonctionnalités de la version 2.7 de Python non supportées par la version 3 est incompatible avec LibreOffice.

LibreOffice 5.1 fournit un PyUNO plus pythonique.
PyUNO est la liaison entre le langage Python et l'API LibreOffice.
Les objets UNO comportant une interface de conteneur peuvent être manipulés en employant les mécanismes Python de liste, itérateur, dictionnaire. Ceci est détaillé dans le commit et plus clairement dans cette présentation.
En utilisant ces mécanismes le codage Python est plus élégant, mais il s'éloigne de la réalité de l'API : le néophyte aura plus de mal à faire l'équivalence entre un tel codage Python et les méthodes correspondantes de l'API...
Dernière modification par bm92 le 17 janv. 2016 09:58, modifié 2 fois.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

[API] Envoi de courriel

Message par bm92 »

Apache OpenOffice 4.0 a amélioré l'envoi de courriel de manière incompatible avec les versions précédentes et avec LibreOffice.
  • Suppression des services com.sun.star.system.SimpleCommandMail et SimpleSystemMail
  • Ajout du service com.sun.star.system.SystemMailProvider.
Mise en oeuvre : voir suprême de code http://forum.openoffice.org/fr/forum/vi ... 15&t=39844
Dernière modification par bm92 le 21 août 2015 08:45, modifié 1 fois.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

[API] Configuration

Message par bm92 »

LibreOffice version 4.0 et suivantes a changé l'API concernant certaines données de configuration. Pour certains services, les propriétés du service ont été transférées sur des interfaces, sous forme d'attribut :
  • Les propriétés du service com.sun.star.sheet.GlobalSheetSettings sont remplacées par des attributs d'une nouvelle interface com.sun.star.sheet.XGlobalSheetSettings
  • Les propriétés du service com.sun.star.util.PathSettings sont remplacées par des attributs d'une nouvelle interface com.sun.star.util.XPathSettings
  • Les propriétés du service com.sun.star.linguistic2.LinguProperties sont remplacées par des attributs d'une nouvelle interface com.sun.star.linguistic2.XLinguProperties
La réalisation est faite de telle sorte que l'accès par getPropertyValue() reste possible, ce qui permet une compatibilité pour Java ou C++.
L'accès depuis Basic ou Python est lui aussi compatible sans modification.
Dernière modification par bm92 le 21 août 2015 08:29, modifié 1 fois.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

[API] Contrôles champ de Date et champ Horaire

Message par bm92 »

LibreOffice 4.1.1 introduit une incompatibilité avec Apache OpenOffice et toutes les versions précédentes de LibreOffice.
Signalé dans LibreOffice 4.1 ReleaseNotes.

Contrôle DateField
Les pseudo-propriétés Date, Min, Max, First, Last, deviennent une structure com.sun.star.util.Date au lieu d'un Long. De même dans le modèle du contrôle, pour les propriétés Date, DateMin, DateMax.
Contrôle TimeField
Les pseudo-propriétés Time, Min, Max, First, Last, deviennent une structure com.sun.star.util.Time au lieu d'un Long. De même dans le modèle du contrôle, pour les propriétés Time, TimeMin, TimeMax.

Rappel : Pseudo-propriétés
Les objets API comportent souvent une méthode pour écrire une donnée interne, exemple setDate(valeur), et une fonction sans argument pour lire cette donnée, exemple getDate(). Certains langages (Basic, Python, COM, etc) permettent alors de manipuler la donnée comme si elle était une propriété de l'objet, exemple Date.

Un codage compatible toutes versions devra déterminer le type de la propriété et réaliser deux traitements différents.

Exemple Basic sur un contrôle champ de Date, obtenir l'année:

Code : Tout sélectionner

Dim quelleDate As Variant ' Attention !
Dim annee As Long
Dim k As Object
' k étant un contrôle de date ou son modèle
quelleDate = k.Date

if IsNumeric(quelleDate)  then
  annee = quelleDate \ 10000
else
  annee = quelleDate.Year ' LibreOffice >= 4.1.1
end if
Exemple Basic sur un contrôle champ Horaire, obtenir la valeur des minutes:

Code : Tout sélectionner

Dim quelleHeure As Variant ' Attention !
Dim mn As Long
Dim k As Object
' k étant un contrôle d'heure ou son modèle
quelleHeure = k.Time

if IsNumeric(quelleHeure)  then
  mn = (quelleHeure \ 10000) mod 100
else
  mn = quelleHeure.Minutes ' LibreOffice >= 4.1.1
end if
LibreOffice a rajouté des fonctions Basic de conversion entre une donnée de type Basic Date et une donnée de type structure UNO. Elles sont décrites dans l'aide F1.

Code : Tout sélectionner

CDateFromUnoDate()
CDateFromUnoTime()
CDateFromUnoDateTime()
CDateToUnoDate()
CDateToUnoTime()
CDateToUnoDateTime()
Attention : ces fonctions de Basic n'existent que dans LibreOffice 4.1.2 ou plus récent, elles n'existent pas dans Apache OpenOffice.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Différences en ligne de commande

Message par bm92 »

Lorsqu'on lance OpenOffice en ligne de commande, ou depuis un fichier batch, on peut ajouter des arguments pour préciser le fonctionnement.
Les arguments acceptés sont listés dans l'aide F1; onglet Index, rechercher Arguments dans la ligne de commande.

Les arguments acceptés les plus courants sont identiques entre Apache OpenOffice et LibreOffice.
Mais certains arguments n'existent que sur une seule suite, par exemple :

--convert-to et --print-to-file ne sont reconnus que par LibreOffice.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Fonction pour Calc modifiant une autre cellule

Message par bm92 »

Dans le fil
[Calc]Fonction pour écrire dans une cellule distante

on peut voir cette exemple de fonction, à utiliser dans une formule de cellule :

Code : Tout sélectionner

Function ECRIRDANS(arg1 As string, arg2 As variant) As string
    If IsNumeric(arg2)  then
       ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(arg1).Value = arg2   
    Else
       ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(arg1).String = arg2
    End If
End Function
Elle permet de modifier le contenu d'une cellule quelconque de la feuille.

Cette fonction est efficace seulement sur LibreOffice.
Sur Apache OpenOffice( et sur OpenOffice.org) la fonction ne modifie pas la cellule distante, sans déclencher d'erreur.
Ceci est une volonté des développeurs pour éviter des anomalies d'affichage, voir le rapport 31627.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Documentation IDL du SDK

Message par bm92 »

La documentation IDL, fournie par le SDK, décrit les différents services, interfaces, propriétés, etc, de l'API.

Depuis la version 4.2 de LibreOffice cette documentation a une présentation très différente de celle employée par Apache OpenOffice et OpenOffice.org. Les fichiers html de documentation sont générés par un outil général de développeur, doxygen, au lieu de autodoc, qui est adapté aux concepts de l'API OpenOffice.
La documentation IDL de LibreOffice répartit les éléments en Namespaces et Classes, notions utiles pour étudier la structure du logiciel, mais sans intérêt pour un utilisateur de l'API.

Pour trouver la documentation d'un élément inconnu on utilise les indexes.
Apache OpenOffice regroupe tous les éléments de l'API dans un seul index alphabétique, une page par lettre initiale, exemple page des A; chaque ligne de l'index indique l'adresse hiérarchique et le type de l'entité correspondante, ce qui permet de distinguer les entités ayant le même nom.

LibreOffice présente plusieurs indexes alphabétiques; certains tiennent sur une seule page, d'autres ont une page par lettre initiale.
En cas d'homonymie l'index donne une liste de liens, parfois sans préciser leur hiérarchie dans l'API. Il faut lire la page de chaque lien pour comprendre à quoi chacun correspond.
Chaque index liste les entités d'un ou plusieurs types. Les noms de ces types peuvent différer des concepts API et prêter à confusion.
  • Namespace Members
  • Class Members
    • Functions = API function
    • Variables = API attribute, property, field in struct, field in exception, sequence
    • All = regroupement des entités ci-dessus
  • Class Index
    Sur une seule page Web, cet index liste les entités des autres types de l'API : service, interface, structure...
    Le nom du lien indique sa hiérarchie dans l'API.
Les pages descriptives diffèrent elles aussi de la documentation Apache OpenOffice. L'adresse de ces pages ne reflète pas la hiérarchie API. La hiérarchie est indiquée en haut de page, dans la troisième ligne bleutée.
Les termes employés dans les titres de section prêtent à confusion: Member, Attributes.
  • Dans une page de service l'accent est mis sur l'héritage des services et des interfaces. Sous Public Attributes on trouve essentiellement des propriétés. Exemple service com.sun.star.text.textfield.docinfo.Revision : LibreOffice / Apache OpenOffice
  • Dans une page d'interface, dans la section Public Attributes on trouve les attributs de l'interface. Exemple interface com.sun.star.presentation.XSlideShowController : LibreOffice / Apache OpenOffice
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Contrôle Compteur (SpinButton)

Message par bm92 »

Formulaires
Le contrôle Compteur (SpinButton en anglais) existe pour les formulaires, sur Apache OpenOffice et LibreOffice. Il se trouve sur la palette de contrôles supplémentaires.

Dialogues Apache OpenOffice
Dans un dialogue, ce contrôle n'existe pas sur la palette de contrôles de l'EDI. Cependant il est possible de l'ajouter dynamiquement sur un dialogue, par programmation; mais c'est plus compliqué. Ce suprême de code en montre un exemple.

Dialogues LibreOffice
Depuis sa version 3.5, LibreOffice a introduit le contrôle Compteur sur la palette de contrôles de dialogue de l'EDI.
Mais le document contenant un dialogue créé avec ce contrôle est incompatible avec Apache OpenOffice. En effet Apache OpenOffice ne sait pas interpréter le fichier xml du dialogue.
SpinButton_inconnu.png
Par contre, si le contrôle est ajouté par programme sur le dialogue, la compatibilité Apache OpenOffice - LibreOffice subsiste.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

DocumentInfo est obsolète

Message par bm92 »

Le service DocumentInfo qui est marquée obsolète depuis OpenOffice.org 3.0, n'existe plus sur LibreOffice 4.0 et plus récents.
D'anciennes macros utilisent les propriétés de ce service, obtenu via la pseudo-propriété DocumentInfo ou via la méthode getDocumentInfo().

Code : Tout sélectionner

Dim infos As Object

infos = ThisComponent.DocumentInfo  ' obsolète !
MsgBox(infos.Author")
Ce service existe encore sur Apache OpenOffice 4.1.1, mais pourrait être supprimé dans l'avenir.

Pour LibreOffice comme pour Apache OpenOffice, utiliser à la place l'interface XDocumentProperties dont on utilisera les attributs d'interface ou l'objet renvoyé par la méthode getUserDefinedProperties().

Code : Tout sélectionner

Dim infos As Object, udp As Object

infos = ThisComponent.DocumentProperties
MsgBox(infos.Author")
udp = infos.UserDefinedProperties
...
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 947
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Multi-sélection de fichier avec le service FilePicker

Message par luky-luke »

Si vous souhaitez utiliser la multi-sélection de fichier du service com.sun.star.ui.dialogs.OfficeFilePicker ou com.sun.star.ui.dialogs.FilePicker, la récupération dans un tableau (Array) des fichiers sélectionnés est différentié entre les deux suites.

Avec AOO rien ne change

Code : Tout sélectionner

sub MultiSelectionDeFichier
Dim Fichier As Object, selectionFichier() As String
Dim Version As String, i As Integer
	Fichier = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker") 'boite de dialogue OpenOffice
'	Fichier = CreateUnoService("com.sun.star.ui.dialogs.FilePicker") 'Boite de dialogue OS (par defaut dans les options)
	with Fichier
'		.DisplayDirectory = convertToUrl("/LeChemin/DeMon/Repertoire/") 'Répertoire d'ouverture de la boite de dialogue
'		.appendFilter("Calc documents (*.ods)", "*.ods")'Filtre choix utilisateur
'		.appendFilter("Writer documents (*.odt)", "*.odt")'Filtre choix utilisateur
		.Title = "Sélectionner un ou plusieurs fichiers"
		.MultiSelectionMode = True ' Sélection multiple, false par defaut
                  end with
    

	If Fichier.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
		selectionFichier() = Fichier.Files 'Tableau des fichiers sélectionnés
                  End if
End sub
Le premier index du tableau selectionFichier(0) vous renvoie le répertoire commun des fichiers sélectionnés, les suivants ne comportent que le nom des fichiers avec son extension.


Avec LibO la propriété .Files existe toujours et ne renvoie pas d'erreur mais ne donne que le chemin complet du premier fichier sélectionnés.
Pour obtenir l'ensemble des fichiers sélectionnés, il faut utiliser la propriété .SelectedFiles.

Code : Tout sélectionner

sub MultiSelectionDeFichier
Dim Fichier As Object, selectionFichier() As String
Dim Version As String, i As Integer
	Fichier = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker") 'boite de dialogue OpenOffice
'	Fichier = CreateUnoService("com.sun.star.ui.dialogs.FilePicker") 'Boite de dialogue OS (par defaut dans les options)
	with Fichier
'		.DisplayDirectory = convertToUrl("/LeChemin/DeMon/Repertoire/") 'Répertoire d'ouverture de la boite de dialogue
'		.appendFilter("Calc documents (*.ods)", "*.ods")'Filtre choix utilisateur
'		.appendFilter("Writer documents (*.odt)", "*.odt")'Filtre choix utilisateur
		.Title = "Sélectionner un ou plusieurs fichiers"
		.MultiSelectionMode = True ' Sélection multiple, false par defaut
                  end with
    

	If Fichier.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
		selectionFichier() = Fichier.SelectedFiles 'Tableau des fichiers sélectionnés
                  End if
End sub
L'ensemble des index du tableau selectionFichier() renvoit le chemin complet des fichiers sélectionnés.


Un exemple de code compatible pour les deux suites

Code : Tout sélectionner

Option Explicit

sub MultiSelectionDeFichier
Dim Fichier As Object, selectionFichier() As String
Dim Version As String, i As Integer

	GlobalScope.BasicLibraries.loadLibrary("Tools")
	version = GetProductName()'quelle suite utilisée ? AOO ou LibreO et numéro de version

	Fichier = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker") 'boite de dialogue OpenOffice
'	Fichier = CreateUnoService("com.sun.star.ui.dialogs.FilePicker") 'Boite de dialogue OS (par defaut dans les options)
	with Fichier
'		.DisplayDirectory = convertToUrl("/LeChemin/DeMon/Repertoire/") 'Répertoire d'ouverture de la boite de dialogue
'		.appendFilter("Calc documents (*.ods)", "*.ods")'Filtre choix utilisateur
'		.appendFilter("Writer documents (*.odt)", "*.odt")'Filtre choix utilisateur
		.Title = "Sélectionner un ou plusieurs fichiers"
		.MultiSelectionMode = True ' Sélection multiple, false par defaut
    end with
    

	If Fichier.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
	
		REM LibreOffice
		If Left(version,5) = "Libre" then		
			selectionFichier() = Fichier.SelectedFiles 'Tableau des fichiers sélectionnés
						
			MsgBox((UBound(selectionFichier())+1) & " fichiers sélectionnés : " & chr(13) & join(selectionFichier()),,Version)
			
		REM ApacheOpenOffice
		Else		
			selectionFichier() = Fichier.Files 'Tableau des fichiers sélectionnés
						
			MsgBox ("Index 0 dans l'array" &  chr(13) & "Le répertoire commun des fichiers sélectionnés est " & selectionFichier(0),,"Apache " & Version)
			for i = 1 to UBound(selectionFichier())
				MsgBox("Index " & i & " dans l'array" & chr(13) & "Le Fichier sélectionné est " & chr(13) & selectionFichier(i),,"Apache " & Version)
			Next i
		End If
	End if
End sub
LibO 7.4.7.2 Raspberry pi et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

[Writer] Insérer une image liée à partir de LibreOffice 6.1

Message par Hubert Lambert »

Bonjour à tous,

Plusieurs modifications dans la gestion des images sous LibreOffice ont induit des changements dans l'api UNO : voir notamment ici, ainsi que les rapports de bug 117427 et 119519.

Jusqu'avant la version 6.1 de LibreOffice, et sous OpenOffice toujours, la méthode utilisée pour insérer une image liée est la suivante :

Code : Tout sélectionner

    doc = thiscomponent
    T = doc.Text
    gobject = doc.CreateInstance("com.sun.star.text.GraphicObject")
    url = convertToURL("C:\Users\127998\Desktop\image.png")
    gobject.GraphicURL = url
    gobject.Width = 2500
    gobject.Height = 2500
    T.insertTextContent(T.Start, gobject, False)
Celle-ci fonctionne encore à partir de LibreOffice 6.1, mais produit désormais une image embarquée. Et la propriété GraphicURL semble condamnée dans un avenir proche.
La nouvelle méthode pour insérer une image liée, telle que décrite dans les liens précités, est la suivante :

Code : Tout sélectionner

    doc = thiscomponent
    T = doc.Text
    gobject = doc.CreateInstance("com.sun.star.text.GraphicObject")
    graphicprovider = createUnoService("com.sun.star.graphic.GraphicProvider")
    dim props(1) as new com.sun.star.beans.PropertyValue
    props(0).Name = "URL"
    props(0).Value = convertToURL("C:\Users\127998\Desktop\image.png")
    props(1).Name = "LoadAsLink"
    props(1).Value = True
    graphic = graphicprovider.queryGraphic(props())
    gobject.Graphic = graphic
    gobject.Width = 2500
    gobject.Height = 2500
    T.insertTextContent(T.Start, gobject, False)
Pour savoir si une image est liée ou incorporée, l'interface XGraphic (l'objet renvoyé par la méthode queryGraphic) possède deux nouvelles propriétés : "Linked" et "OriginURL".
Pour garantir la portabilité, il faudra donc, comme suggéré dans les deux rapports de bug, réaliser un test sur la version du programme utilisé...

Cordialement.

 Ajout : Au 21/03/2019

Pour faire suite au précédent message, il n'est plus possible sous LibO de récupérer le nom de l'image embarquée dans le document.
La propriété de l'API Graphic.OriginURL ne renvoie plus cette information (rapport de bogue 119899).