LibreOffice 24.8 ž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