Die Math-Komponente exportiert Bilder nicht einfach. Kopieren und fügen Sie sie stattdessen in LibreOffice Draw ein und exportieren Sie von dort aus eine PNG-Datei.
Hier ist ein Code zum Auflisten der Math-Formelobjekte.
Sub ExportFormulasAsImages oDoc = ThisComponent oEmbed = oDoc.getEmbeddedObjects() filenum = 0 For i = 0 To oEmbed.getCount() - 1 oObj = oEmbed.getByIndex(i) If oObj.supportsService("com.sun.star.text.TextEmbeddedObject") Then If oObj.CLSID = "078B7ABA-54FC-457F-8551-6147e776a997" Then oFormulaDoc = oObj.getEmbeddedObject().Parent oDrawPage = oFormulaDoc.DrawPage(0) filenum = filenum + 1 sURL = "file:///path/formula" & Format(filenum, "00") & ".jpg" End If End If Next MsgBox "Exported " & filenum & " formulas as images." End Sub
Beispielcode für das Kopieren in Draw und das Exportieren finden Sie unter https://ask.libreoffice.org/de/question/141898/macro-for-saving-sheet-as-single-image-in-calc/ .
Ich habe es Ihnen überlassen, genau zu bestimmen, wie Sie den Code schreiben, aber Sie können auf StackOverflow oder ask.libreoffice.org posten, wenn Sie nicht weiterkommen. Veröffentlichen Sie den Code, den Sie bisher ausprobiert haben.
BEARBEITEN :
Ein guter Ort, um LibreOffice-Makros kennen zu lernen, ist http://www.pitonyak.org/oo.php .
Verwenden Sie ein Introspektions-Tool wie MRI oder XrayTool, um herauszufinden, was Objekte tun können .
Ignorieren Sie bei den API-Dokumenten das SwX-Präfix beim Schreiben von Makros. Diese Dokumente sind hilfreich, wenn sie zusammen mit einem Introspektions-Tool verwendet werden. Allein genommen sind sie aufgrund der Vererbungsstruktur schwer zu lesen.
- https://www.openoffice.org/api/docs/common/ref/com/sun/star/text/TextEmbeddedObject.html
- https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1text_1_1TextEmbeddedObject.html
Die Aufnahme ist keine gute Methode, um das Schreiben von Makros zu lernen. Es ist jedoch nützlich für bestimmte Dispatcher-Vorgänge wie Kopieren / Einfügen. Dazu aktivieren experimentelle Funktionen in Extras -> Optionen -> Erweitert . In LO 6 gibt es ein spezielles Kontrollkästchen Makroaufnahme aktivieren . Dann Extras -> Makros -> Makro aufnehmen .
Zu beachten ist noch Folgendes: Für ernsthafte Arbeit ist Python-UNO in der Regel eine bessere Methode zum Schreiben von Makros, beispielsweise aufgrund von Datenstrukturen, regulären Ausdrücken und der Dateibehandlung. (C ++ ist möglich, aber für die meisten Makros nicht so gut. Java ist eine gute Wahl und hält sich eng an die UNO-API, macht jedoch einige Dinge schwieriger als nötig.)