2016-04-25 13 views
2

Es gibt viele Beispiele zur Verwendung von Python zur Steuerung des LibreOffice-Textdokuments und der Tabellenkalkulation, aber sehr wenig Dokumentation zur Verwendung des Zeichenprogramms. Ich versuche herauszufinden, wie man in LibreOffice mit Python ein Flussdiagramm oder zumindest einige Formen zeichnet. Ich bin mit 10 Windows und in der Python 3.3, die mit Libreoffice kam 5.Erstellen von Ablaufdiagrammen in LibreOffice mit Python

Es ist ein sehr gutes Beispiel dafür, wie Tabellenkalkulations LibreOffice Python example

Im Beispiel verwenden die folgenden Zeilen gemeinsam sind, wenn Sie den Text-Dokument zu verwenden, Tabellenkalkulation, Zeichnung oder andere Dokumente.

import socket 
import uno 
localContext = uno.getComponentContext() 
resolver =  localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext) 
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext") 
smgr = ctx.ServiceManager 
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop",ctx) 
model = desktop.getCurrentComponent() 

Der folgende Code wurde auch in dem Beispiel das Tabellenkalkulationsprogramm zu ändern, und es funktioniert super. Der Code setzt "Hello World" und eine Zahl in die Tabelle.

Für das Zeichenprogramm gibt es einige ähnliche Befehle, um ein aktives Blatt zu erhalten und eine Liste von Formen zu erhalten, die gezeichnet werden können? Ich suche vielleicht am falschen Ort, habe aber keine Dokumentation für das Zeichenprogramm gefunden.

Antwort

2

Hier ist ein funktionierendes Beispiel für Python:

import uno 

def create_shape(document, x, y, width, height, shapeType): 
    shape = document.createInstance(shapeType) 
    aPoint = uno.createUnoStruct("com.sun.star.awt.Point") 
    aPoint.X, aPoint.Y = x, y 
    aSize = uno.createUnoStruct("com.sun.star.awt.Size") 
    aSize.Width, aSize.Height = width, height 
    shape.setPosition(aPoint) 
    shape.setSize(aSize) 
    return shape 

def insert_shape(): 
    document = XSCRIPTCONTEXT.getDocument() 
    drawPage = document.getDrawPages().getByIndex(0) 
    shape = create_shape(
     document, 0, 0, 10000, 5000, "com.sun.star.drawing.RectangleShape") 
    drawPage.add(shape) 
    shape.setString("My new RectangleShape"); 
    shape.setPropertyValue("CornerRadius", 1000) 
    shape.setPropertyValue("Shadow", True) 
    shape.setPropertyValue("ShadowXDistance", 250) 
    shape.setPropertyValue("ShadowYDistance", 250) 
    shape.setPropertyValue("FillColor", int("C0C0C0", 16)) # blue 
    shape.setPropertyValue("LineColor", int("000000", 16)) # black 
    shape.setPropertyValue("Name", "Rounded Gray Rectangle") 

# Functions that can be called from Tools -> Macros -> Run Macro. 
g_exportedScripts = insert_shape, 

Es ist ziemlich vollständige Referenzdokumentation bei https://wiki.openoffice.org/wiki/Documentation/DevGuide/Drawings/Working_with_Drawing_Documents. Achten Sie besonders auf die "Shapes" -Seiten (beachten Sie die Navigation auf der rechten Seite der Seite). Zum einen gibt es eine Seite, auf der Sie eine Liste der gewünschten Shape-Typen finden.

Da die Python-UNO-Dokumentation etwas eingeschränkt ist, müssen Sie sich daran gewöhnen, Beispiele in Java oder Basic zu lesen und den Code an Python anzupassen, wie ich oben getan habe.

Verwandte Themen