Collabora Office 24.04 laguntza
Posible da Python scriptak deitzea Collabora Office Basic makroetatik, eta horrela eginbide erabilgarriak eskuratu daitezke, adibidez:
posible dira ComputerName identifikazioa edo OSName detekzioa,
Basic FileLen() funtzioak eta com.sun.star.ucb.SimpleFileAccess.getSize() API funtzioak 2 gigabyteko gehieneko fitxategi-tamaina dute, eta Pythonek hori gainditzen laguntzen du,
com.sun.star.util.PathSettings normalizatua izan daiteke,
eta askoz gehiago.
Collabora Office Basic eta Application Programming Interface (API) nahiko ongi ezagutzea komeni da lengoaien arteko deiak (Basic lengoaiatik Pythonera, JavaScriptera edo beste edozein script-lengoaiara) egin baino lehen.
Python scriptak pertsonalak, partekatuak edo dokumentuetan kapsulatuak izan daitezke. Haiek exekutatzeko, Python scripten kokalekuak esan behar zaizkio Collabora Office Basic-i. com.sun.star.script.provider.XScript interfazearekin bat datozen UNO objektuak lokalizatuta, Python scriptak exekutatu daitezke:
Option Explicit
Public Function GetPythonScript(macro As String, _
Optional location As String) As com.sun.star.script.provider.Xscript
''' Hartu Python script objektua exekuzioa baino lehen
' Argumentuak:
' macro : "library/module.py$macro" edo "module.py$macro" modura
' location: "document", "share", "user" ENUM(eration) modura
' Emaitza:
' com.sun.star.script.provider.XScript UNO service''' aurkitu da
If IsMissing(location) Then location = "user"
Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
Dim sp As Object ' com.sun.star.script.provider.XScriptProvider bateragarria
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()) ' in_out matrize bat da
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Azpiko ComputerName eta GetFilelen errutinak beren pareko Python scriptei deitzen ari dira, goian aipatutako GetPythonScript funtzioa erabilita. Salbuespenen maneiua ez dago azalduta.
Option Explicit
Option Compatible ' Propietateak onartzen dira
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get ComputerName As String
'''Lan-estazioaren izena'''
scr = GetPythonScript("Platform.py$computer_name", "document")
ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName
Private Function GetFilelen(systemFilePath As String) As Currency
'''Fitxategi-tamaina bytetan'''
scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
End Function ' GetFilelen
Private Type _SCRIPT_LOCATION
ISEMBEDDED As String ' dokumentu-scripta
ISPERSONAL As String ' erabiltzaile-scripta
ISSHARED As String ' Collabora Office makroa
End Type ' _SCRIPT_LOCATION
Public Function Script() As Object ' Text enumeration
Static enums As _SCRIPT_LOCATION : With enums
If .ISEMBEDDED = "" Then
.ISEMBEDDED = "document" ' dokumentu-scripta
.ISPERSONAL = "user" ' erabiltzaile-scriptak
.ISSHARED = "share" ' Collabora Office makroa
End If : End With ' enums
Script = enums
End Function ' Script
Bi Python modulu desberdin deituko dira. Uneko dokumentuan kapsulatuta egon daitezke edo fitxategi-sisteman biltegiratuta egon daitezke. Argumentu motaren egiaztatzea ez da erakusten, adibidea argiago erakusteko:
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)
Python script pertsonal edo partekatuetarako deitze-mekanismoa kapsulatutako scripten bera da. Liburutegi-izenak karpetekin mapatuta daude. Collabora Office erabiltzaile-profila eta partekatutako moduluen sistemako fitxategi-bideak Saioaren informazioa eskuratzea atalean azaldutako moduan kalkulatu daitezke. Azpiko OSName, HelloWorld eta NormalizePath errutinak beren parekoak diren Python scriptak deitzen ari dira, goian aipatutako GetPythonScript funtzioa erabilita. Salbuespenen maneiua ez dago azalduta.
Option Explicit
Option Compatible ' Propietateak onartzen dira
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get OSName As String
'''Plataforma-izena: "Linux", "Darwin" edo "Windows"'''
scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName
Private Sub HelloWorld()
'''Collabora Office Python lagin partekatua'''
scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld
Public Function NormalizePath(systemFilePath As String) As String
'''Kendu soberan dauden '\..' bide-izenetik'''
scr = GetPythonScript("Os/Path.py$normalyze", "user")
NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath
Collabora Office suitearekin kapsulatutako Pythonek liburutegi estandar asko ditu lanerako. Eginbideen multzo aberatsa du, adibidez honakoak:
argparse analizatzailea komando-lerroko aukeretarako, argumentuetarako eta azpikomandoetarako
cmath Funtzio matematikoak zenbaki konplexuetarako
csv CSV fitxategiak irakurtzea eta idaztea
datetime Benetako data eta ordu motak
json JSON kodetzailea eta deskodetzailea
math Funtzio matematikoak
re Adierazpen erregularren eragiketak
socket Maila baxuko sare-interfazea
sys Sistemarenak espezifikoak diren parametroak eta funtzioak
unittest eta trace Unitate-proben lan-markoa eta Python exekuzioaren segimendua
xml.etree.ElementTree ElementTree XML APIa