Bitte unterstützen Sie uns!

Modul officehelper

Auf diesen Befehl zugreifen …

Extras – Makros – LibreOfficeDev Basic – Bearbeiten… öffnen und den Container Anwendungsmakros auswählen.


Das Modul officehelper startet einen LibreOfficeDev-Prozess, der eine benannte Pipe mit zufälligem Namen öffnet. officehelper bindet IDE-basierte Python-Skripte zu Debugging-Zwecken an eine laufende LibreOfficeDev-Instanz an.

Methoden

Liste der Methoden im Modul officehelper

bootstrap

SessionManager


bootstrap

Öffnet eine benannte Pipe mit zufälligem Namen und verwendet den lokalen Kontext für den Zugriff auf die Pipe. Gibt den Kontext der Remote-Komponente zurück; von dort aus lässt sich der ServiceManager durch Aufruf von getServiceManager() auf dem zurückgegebenen Objekt abrufen.

Tippsymbol

SessionManager ist eine bevorzugte Alternative zur Methode bootstrap.


Syntax:

bootstrap(soffice: str, delays=(1,3,5,7), report: str): uno

Parameter:

soffice: Eine spezifische Binärkopie von LibreOfficeDev, wie etwa eine portable Version oder eine Entwicklungsversion.

delays: Legt mehrere Verbindungsversuche fest. Standardmäßig wird zwischen den Wiederholungsversuchen eine Pause von 1, 3, 5 und 7 Sekunden eingelegt.

report: Optionaler Methodenname, der zum Melden oder Protokollieren von Verbindungsfehlern verwendet wird.

Beispiel:


      # LO als Dienst starten und dessen Kontext für die Remote-Komponente abrufen
      import officehelper
      ctx = officehelper.bootstrap()
      # Eigener Code kommt hierhin
      # request context multiples times and report processing in console
      import officehelper as oh
      ctx = oh.bootstrap(delays=(5,10,15,20),report=print)
      # Eigener Code kommt hierhin
      # Eine bestimmte Binärversion verwenden
      from officehelper import bootstrap
      ctx = bootstrap(soffice=r"USB:\\PortableApps\\libO-7.6\\App\libreoffice\\program\\soffice.exe")
      # Eigener Code kommt hierhin
    

Solche zufällig benannten Pipes müssen wie folgt aus dem Speicher freigegeben werden:


      # named pipe memory cleanup
      smgr = ctx.getServiceManager()
      desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
      desktop.terminate()
    

SessionManager class

Öffnet eine benannte Pipe mit zufälligem Namen und nutzt den lokalen Kontext für den Zugriff auf die Pipe. Gibt den Kontext der Komponente "remote" zurück; von dort aus lässt sich der ServiceManager durch Aufruf von getServiceManager() auf dem zurückgegebenen Objekt abrufen. Zudem gibt der SessionManager Speicher des LibreOfficeDev-Prozesses mit dem zufälligen Namen frei und meldet Verbindungsversuche an der Konsole.

Syntax:

SessionManager(soffice: str, delays=(1,3,5,7)): uno

Parameter:

Beispiel:

soffice: Eine spezifische Binärkopie von LibreOfficeDev, wie etwa eine portable Version oder eine Entwicklungsversion.

delays: Legt mehrere Verbindungsversuche fest. Standardmäßig wird zwischen den Wiederholungsversuchen eine Pause von 1, 3, 5 und 7 Sekunden eingelegt.


      def my_script():
          # Benutzercode kommt hierhin
      g_exportedScripts = (my_script,)  # LibreOffice-Einstiegspunkte
      if __name__ == "__main__":  # Einstiegspunkt für IDEs
          from officehelper import SessionManager
          with SessionManager() as ctx:  # Remote-Python-Kontext
              my_script()
    
Tippsymbol

Die Methode scriptforge.ScriptForge() verwenden, um IDE-basierte Python-Skripte an einen permanenten, über die Befehlszeile gestarteten Dienst von LibreOfficeDev zu binden.