Collabora Office 24.04 Βοήθεια
Κλήση δέσμης ενεργειών (scripts) Python από μακροεντολές Basic του Collabora Office είναι εφικτή και σημαντικά χαρακτηριστικά μπορούν να ληφθούν όπως:
Ταυτοποίηση ComputerName ή εντοπισμός OSName είναι εφικτά,
Η συνάρτηση Basic FileLen() και com.sun.star.ucb.SimpleFileAccess.getSize() Η συνάρτηση API εμφανίζει ανώτερο όριο μεγέθους αρχείου 2 Gigabytes που το Python βοηθά να ξεπεραστεί,
com.sun.star.util.PathSettings μπορεί να κανονικοποιηθεί,
και πολλά άλλα.
Συνιστάται λογική έκθεση στο Collabora Office Basic και σε γνωρίσματα της διασύνδεσης προγραμματισμού εφαρμογών (API) πριν την εκτέλεση διαγλωσσικών κλήσεων από Basic σε Python, σε JavaScript ή οποιονδήποτε άλλο μηχανισμό δεσμών ενεργειών.
Οι δέσμες ενεργειών Python μπορεί να είναι προσωπικές, κοινόχρηστες, ή ενσωματωμένες σε έγγραφα. Για να τις εκτελέσετε, το Collabora Office Basic πρέπει να παρέχεται με θέσεις δεσμών ενεργειών Python. Ο εντοπισμός com.sun.star.script.provider.XScript σύνδεσης συμβατής με αντικείμενα UNO επιτρέπει την εκτέλεση δεσμών ενεργειών Python:
Option Explicit
Public Function GetPythonScript(macro As String, _
Optional location As String) As com.sun.star.script.provider.Xscript
'''Αιχμαλωσία αντικειμένου δέσμης ενεργειών Python πριν την εκτέλεση
'Ορίσματα:
' macro : ως "library/module.py$macro" ή "module.py$macro"
' θέση: ως "document", "share", "user" ή ENUM(eration)
'Αποτέλεσμα:
' εντοπίστηκε com.sun.star.script.provider.XScript UNO υπηρεσία'''
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 συμβατό
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 είναι ένας πίνακας
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Κάτω από τις ρουτίνες ComputerName και GetFilelen καλούνται οι αντίστοιχές τους Python, χρησιμοποιώντας την προμνημονευθείσα συνάρτηση GetPythonScript. Η διαχείριση της εξαίρεσης δεν είναι λεπτομερής.
Option Explicit
Option Compatible 'Οι ιδιότητες υποστηρίζονται
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get ComputerName As String
'''Όνομα του σταθμού εργασίας'''
scr = GetPythonScript("Platform.py$computer_name", "document")
ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName
Private Function GetFilelen(systemFilePath As String) As Currency
'''Μέγεθος αρχείου σε ψηφιολέξεις (bytes)'''
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 ' δέσμη ενεργειών εγγράφου
ISPERSONAL As String ' δέσμη ενεργειών χρήστη
ISSHARED As String ' μακροεντολή του Collabora Office
End Type ' _SCRIPT_LOCATION
Public Function Script() As Object ' Text enumeration
Static enums As _SCRIPT_LOCATION : With enums
If .ISEMBEDDED = "" Then
.ISEMBEDDED = "document" ' δέσμη ενεργειών εγγράφου
.ISPERSONAL = "user" ' δέσμες ενεργειών χρήστη
.ISSHARED = "share" ' μακροεντολή του Collabora Office
End If : End With ' enums
Script = enums
End Function ' Script
Καλούνται δύο διαφορετικά αρθρώματα Python. Μπορούν είτε να ενσωματωθούν στο τρέχον έγγραφο, είτε να αποθηκευτούν στο σύστημα αρχείων. Ο έλεγχος τύπου ορίσματος παραλείπεται για σαφήνεια:
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 είναι ταυτόσημος με αυτόν των ενσωματωμένων δεσμών ενεργειών. Τα ονόματα βιβλιοθηκών απεικονίζονται σε φακέλους. Ο υπολογισμός των διαδρομών αρχείων συστήματος της κατατομής (προφίλ) χρήστη του Collabora Office και των κοινόχρηστων αρθρωμάτων μπορεί να εκτελεστεί όπως περιγράφεται λεπτομερώς στη Λήψη πληροφοριών συνεδρίας. Κάτω από το OSName, οι ρουτίνες HelloWorld and NormalizePath καλούν τις αντίστοιχες τους Python, χρησιμοποιώντας την προαναφερόμενη συνάρτηση GetPythonScript. Ο χειρισμός εξαιρέσεων δεν περιγράφεται λεπτομερώς.
Option Explicit
Option Compatible 'Οι ιδιότητες υποστηρίζονται
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get OSName As String
'''Το όνομα λειτουργικού συστήματος όπως "Linux", "Darwin" ή "Windows"'''
scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName
Private Sub HelloWorld()
'''Κοινόχρηστο δείγμα του Collabora Office Python'''
scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld
Public Function NormalizePath(systemFilePath As String) As String
'''Αφαίρεση περιττού '\..' σε διαδρομή'''
scr = GetPythonScript("Os/Path.py$normalyze", "user")
NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath
Το ενσωματωμένο Python του Collabora Office περιέχει πολλές τυπικές βιβλιοθήκες για να επωφεληθείτε. Φέρουν πλούσιο σύνολο γνωρισμάτων, μεταξύ άλλων:
argparse Ανάλυση επιλογών γραμμής εντολών, ορισμάτων και υποεντολών
cmath Μαθηματικές συναρτήσεις μιγαδικών αριθμών
csv Ανάγνωση και εγγραφή αρχείων CSV
datetime Αυθεντικούς τύπους ημερομηνίας και χρόνου
json κωδικοποιητή και αποκωδικοποιητή JSON
math Μαθηματικές συναρτήσεις
re Λειτουργίες κανονικών εκφράσεων
socket Διεπαφή δικτύωσης χαμηλού επιπέδου
sys Παράμετροι και συναρτήσεις ειδικές για το σύστημα
unittest και trace Πλαίσιο ελέγχου μονάδας και εκτέλεση παρακολούθησης Python
xml.etree.ElementTree Δένδρο στοιχείων XML API