LibreOffice 25.2 žinynas
Pitono skriptų iškvietimas iš „LibreOffice Basic“ makrokomandų yra galimas, galioja šios vertingos savybės:
Galimas ComputerName nustatymas arba OSName aptikimas,
„Basic“ FileLen() funkcija ir com.sun.star.ucb.SimpleFileAccess.getSize() API funkcija parodo 2 G baitų failo dydžio viršutinę ribą, kurią Pitonas padeda įveikti,
com.sun.star.util.PathSettings gali būti normalizuota,
ir žymiai daugiau.
Rekomenduojamos deramas „LibreOffice Basic“ ir programų sąsajos (API) savybių prioritetas vykdant iškvietimus iš „Basic“ ir Pitono kalbų, ir iš „JavaScript“ ar bet kurių kitų variklių skriptų.
Pitono skriptai gali būti asmeniniai, bendrinami ar įterpti į dokumentus. Kad galėtume juos vykdyti, „LibreOffice Basic“ reikia nurodyti Pitono skripto vietą. Atitinkamų UNO objektų sąsajų vietų nustatymas com.sun.star.script.provider.XScript leidžia vykdyti Pitono skriptus:
         Option Explicit
             
         Public Function GetPythonScript(macro As String, _
                 Optional location As String) As com.sun.star.script.provider.Xscript
             ''' Imkite Pitono skripto objektą prieš jo vykdymą
             ' Argumentai:
             '    makrokomanda: kaip „library/module.py$macro“ arba „module.py$macro“
             '    vieta: kaip „dokumentas“, „bendrinimas“, „vartotojas“ arba ENUM(eration)
             ' Rezultatas:
             '   pateikiama com.sun.star.script.provider.XScript UNO paslauga'''
             If IsMissing(location) Then location = "user"
             Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
             Nepakankamas „sp“ kaip objekto ' com.sun.star.script.provider.XScriptProvider suderinamumas
             Dim uri As String
             If location="document" Then
                 sp = ThisComponent.getScriptProvider()
             Else
                 mspf = CreateUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
                 sp = mspf.createScriptProvider("")
             End If
             uri = "vnd.sun.star.script:"& macro &"?language=Python&location="& location
             GetPythonScript = sp.getScript(uri)
         End Function ' GetPythonScript
      workstation_name = script.invoke(Array(), Array(), Array())
opSysName = script.invoke(Array(), in_outs, Array()) ' į_iš yra masyvas
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Žemiau „ComputerName“, ir „GetFilelen“ programos kviečia Pitono komponentus, naudojamos anksčiau minėtą GetPythonScript funkciją. Išimčių apdorojimas nedetalizuoajmas.
         Option Explicit
         Palaikoma parinktis „Suderinamumas ' Savybės“
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get ComputerName As String
             '''Darbo stoties pavadinimas'''
             scr = GetPythonScript("Platform.py$computer_name", "document")
             ComputerName = scr.invoke(Array(), Array(), Array())
         End Property ' ComputerName
             
         Private Function GetFilelen(systemFilePath As String) As Currency
             '''Failo dydis baitais'''
             scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
             GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
         End Function ' GetFilelen
             
         Private Type _SCRIPT_LOCATION
             ISEMBEDDED kaip „String ' document“ skriptas
             ISPERSONAL kaip „String ' user“ skriptas
             ISSHARED kaip „String ' LibreOffice“ makrokomanda
         End Type ' _SCRIPT_LOCATION
             
         Public Function Script() As Object ' Text enumeration
             Static enums As _SCRIPT_LOCATION : With enums
             If .ISEMBEDDED = "" Then
                 .ISEMBEDDED = "document" ' documento skriptas
                 .ISPERSONAL = "user" ' vartotojo skriptas
                 .ISSHARED = "share" ' „LibreOffice“ makrokomanda
             End If : End With ' enums
             Script = enums
         End Function ' Script
      Iškviečiami du skirtingi Pitono moduliai. Jie gali būti arba įterpiami į esamą dokumentą, arba laikomi failų sistemoje. Aiškumo dėlei argumentų tipai netikrinami:
Platform.py
         # -*- coding: utf-8 -*-
         from __future__ import unicode_literals
          
         import platform
          
         def computer_name() -> str:
             return platform.node()
          
         def OSname() -> str:
             return platform.system()
      Os/Path.py
         # -*- coding: utf-8 -*-
         from __future__ import unicode_literals
          
         import os.path
          
         def get_size(systemFilePath: str) -> str:
             return str(os.path.getsize(systemFilePath))
          
         def normalyze(systemPath: str) -> str:
             return os.path.normpath(systemPath)
      Asmeninių ar bendrinamų Pitono skriptų iškvietos mechanizmas yra identiškas įterptiniams skriptams. Bibliotekų vardai susieti su katalogais. „LibreOffice“ vartotojo profilio skaičiavimas ir bendrinamų modulių sisteminių failų keliai gali būti vykdomi, kaip nurodoma sesijos informacijoje. Minimos programos OSName, Sveikas, pasauli ir Normalizuotas kelias kreipiasi į Pitono dalis, naudodamos anksčiau paminėtą GetPythonScript funkciją. Išimtys nedetalizuojamos.
         Option Explicit
         Palaikoma parinktis „Suderinamumas ' Savybės“
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get OSName As String
             '''Platformos pavadinimas, pavyzdžiui, „Linux“, „Darwin“ arba „Windows“'''
             scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
             OSName = scr.invoke(Array(), Array(), Array()) 
         End Property ' OSName
             
         Private Sub HelloWorld()
             '''Pitonas bendrina „LibreOffice“ pavyzdį'''
             scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
             scr.invoke(Array(), Array(), Array(),)
         End Sub ' HelloWorld
             
         Public Function NormalizePath(systemFilePath As String) As String
             '''Juostos nereikalingos '\..' '''
             scr = GetPythonScript("Os/Path.py$normalyze", "user")
             NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
         End Function ' NormalizePath
      „LibreOffice“ įterptasis Pitonas turi daug naudingų standartinių bibliotekų. Jie palaiko gausių savybių rinkinį, pavyzdžiui:
argparse Komandos eilutės parinkčių analizatorius, argumentai ir komandos
cmath Mathematinė funkcija kompleksiniams skaičiams
csv CSV failų skaitymas ir rašymas
datetime Tikros datos ir laiko tipai
json JSON koduotuvas ir dekoduotuvas
math Mathematinės funkcijos
re Reguliariųjų reiškinių operacijos
socket Žemo lygio tinklo sąsaja
sys Sisteminiai parametrai ir funkcijos
unittest and trace Sekciją testuojanti struktūra ir Pitono stebėjimų vykdymas
xml.etree.ElementTree Elementų medžio XML API