Seite 1 von 1

LibreOffice Impress - Grafik programmatisch anordnen

Verfasst: Fr 8. Aug 2014, 11:47
von pstoelzg
.
Hallo liebe Leute,
ich brauch Hilfe bei der Programmierung eines Makros in Python.

Das Makro hat bereits einige der gewünschten Funktionen:
* die Präsentation wird abgespeichert
* ich lese Informationen aus Textfeldern, welche auf Folie 'Control' platziert sind
* aufgrund der o.a. Informationen durchsuche ich ein bestimmtes Verzeichnis nach Grafikdateien/ Images, deren Name mit <search pattern> beginnt und mit <file extension> endet
* entsprechend der Anzahl an gefundenen Grafikdateien wird
.. a) die Folie mit dem Index 1 kopiert und in die Präsentation eingefügt ... ODER
.. b) die letzte Folie/ die Folie mit dem höchsten Index gelöscht
* die Präsentation wird abgespeichert
* die Präsentation wird als PDF Datei exportiert und in ein spezifiziertes Verzeichnis gespeichert

Leider habe ich bisher keinen Weg gefunden, um die eingefügten Grafiken auf jeder Folie 'ganz hinten anzuordnen'. Würde man diese Funktion mit der Mouse aktivieren, so würde man
* Rechts-Klick auf Grafik ausführen
* Kontextmenü wird angezeigt
* aus Kontextmenü den folgenden Punkt auswählen
.. Anordnung > Ganz nach hinten

Hätte da evtl. jemand ein paar Zeilen (Python) Code, an denen ich mich orientieren bzw. die ich kopieren könnte?

Mit der Bitte um Hilfe,
Peter

Re: LibreOffice Impress - Grafik programmatisch anordnen

Verfasst: Do 21. Aug 2014, 11:03
von libre4711
Hallo Peter,

vielleicht hilft das:

http://www.pitonyak.org/OOME_3_0.pdf

Auf Seite 560 Tabelle 228 heist es:
Property Description
ZOrder Long Integer
representing the ZOrder of this shape. This controls the drawing order of objects,
effectively moving an object forward or backward.
Gruß
libre4711

[gelöst] LibreOffice Impress - Grafik programmatisch anordne

Verfasst: Mo 25. Aug 2014, 11:15
von pstoelzg
Hallo libre4711,

vielen Dank für Deinen Hinweis...
Ich hatte in der Zwischenzeit schon beim englischsprachigen Entwicklerforum gefragt und dort die selbe Antwort bekommen. Hier der Code, den ich daraus kredenzt habe:

Code: Alles auswählen

# Import python modules
import uno
from com.sun.star.beans import PropertyValue

# Create 'GraphicProvider' object
objServiceManager = uno.getComponentContext().ServiceManager
objGraphProv = objServiceManager.createInstance('com.sun.star.graphic.GraphicProvider')

# Access image object
objGraphic = objGraphProv.queryGraphic((PropertyValue('URL', 0, strUrlImage, 0), ))
		
# Create the graphic wrapper object which can be inserted into the document
objShape = objDoc.createInstance('com.sun.star.drawing.GraphicObjectShape')
objShape.Graphic = objGraphic

# Assign shape to layer zero/ the rearmost layer
objShape.ZOrder = 0


Nochmals vielen Dank,
Peter