Makros/Python-Leitfaden/Einführung
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Spende
Einführung
Was ist PyUNO?
LibreOffice ermöglicht es dem Benutzer, Makros in verschiedenen interpretierten Sprachen zu schreiben, eine davon ist Python. PyUNO ist die Komponente, die den Benutzern Zugriff auf die Programmierschnittstelle (API im Folgenden entsprechend seinem Kürzel Application Programming Interface) von LibreOffice mit Python gibt.
Installation
Auf einigen Betriebssystemen, wie zum Beispiel Ubuntu 18.04 LTS, müssen Sie eventuell ein zusätzliches Betriebssystem-Paket installieren. Bei Ubuntu wird das Paket libreoffice-script-provider-python genannt und enthält Dateien wie zum Beispiel scriptproviderforpython.rdb (XML Metadaten) und pythonscript.py (Python Infrastruktur).
- In Ubuntu 18.04+
sudo apt install libreoffice-script-provider-python
Testen von Unterstützung für Python-Makros
Öffne Sie ein neues Dokument in Writer. Wählen Sie im Menü
▸ ▸ , der "Makro-Auswahl" Dialog erscheint. In dem Bereich wählen Sie ▸ , in dem Bereich wählen Sie und klicken auf die Schaltfläche .Falls Sie dieses Ergebnis sehen, kann Ihr System Python-Makros ausführen.
Wo Makros speichern?
Es gibt keinen eingebaute Art und Weise, um Python-Skripte zu bearbeiten, weshalb Sie Ihren eigenen Texteditor verwenden müssen. Es gibt 3 Orte, an denen Sie Ihren Code ablegen können.
Benutzer-Profil-Verzeichnis, nur für den Benutzer verfügbare Makros
- GNU/Linux
/home/USER/.config/libreoffice/4/user/Scripts/python
- Windows
%APPDATA%\LibreOffice\4\user\Scripts\python
- macOS
~/Library/Application Support/LibreOffice/4/user/Scripts/python/
Verzeichnis von LibreOffice, für alle Benutzer verfügbare Makros
- GNU/Linux
/usr/lib/libreoffice/share/Scripts/python/
Die erwähnten Pfade sind der Standard. In angepassten Installationen können sie unterschiedlich sein. Falls Verzeichnisse nicht existieren, sollten Sie sie erstellen, während Sie die Großschrift respektieren.
Innerhalb eines Dokuments
Jede ODF-Datei ist tatsächlich eine ZIP-Datei. Sie können diese Datei extrahieren, so wie Sie üblicherweise diese Dateitypen entpacken. In der Wurzel (Root) erstellen Sie ein Verzeichnis
Scripts/python/
und kopieren Sie jede Python-Datei hinein, zum Beispiel:
mymacros.py
- Sie sollten sehen
myfile | ... ├── META-INF │ └── manifest.xml ├── Scripts │ └── python │ └── mymacros.py ...
- Bearbeiten Sie die Datei manifest.xml im Verzeichnis META-INF und fügen Sie Zeilen direkt vor das schließende Tag </manifest:manifest> ein
<manifest:file-entry manifest:full-path="Scripts/python/mymacros.py" manifest:media-type="" />
<manifest:file-entry manifest:full-path="Scripts/python/" manifest:media-type="application/binary" />
<manifest:file-entry manifest:full-path="Scripts/" manifest:media-type="application/binary" />
- Die finale Datei sollte sein wie:
<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0">
<manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/>
<manifest:file-entry manifest:full-path="Thumbnails/thumbnail.png" manifest:media-type="image/png"/>
<manifest:file-entry manifest:full-path="settings.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="manifest.rdf" manifest:media-type="application/rdf+xml"/>
<manifest:file-entry manifest:full-path="Configurations2/" manifest:media-type="application/vnd.sun.xml.ui.configuration"/>
<manifest:file-entry manifest:full-path="meta.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="styles.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="Scripts/python/mymacros.py" manifest:media-type="" />
<manifest:file-entry manifest:full-path="Scripts/python/" manifest:media-type="application/binary" />
<manifest:file-entry manifest:full-path="Scripts/" manifest:media-type="application/binary" />
</manifest:manifest>
- Zipen Sie das komplette Verzeichnis wieder. Vorsicht, nicht das externe Verzeichnis zippen. Zippen Sie den Inhalt des Verzeichnisses.