Компонент Math нелегко экспортирует изображения. Поэтому вместо этого скопируйте и вставьте в LibreOffice Draw, а затем экспортируйте файл PNG оттуда.
Вот некоторый код для перечисления объектов формулы Math.
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
Пример кода для копирования в Draw и последующего экспорта находится по адресу https://ask.libreoffice.org/en/question/141898/macro-for-saving-sheet-as-single-image-in-calc/ .
Я оставил вам решать, как именно написать код, но не стесняйтесь размещать сообщения на StackOverflow или ask.libreoffice.org, если вы застряли. Разместите код, который вы уже пробовали.
РЕДАКТИРОВАТЬ :
Хорошее место для начала изучения макросов LibreOffice - http://www.pitonyak.org/oo.php .
Чтобы узнать, что могут делать объекты, используйте инструмент для самоанализа, такой как MRI или XrayTool .
Что касается документации по API, игнорируйте префикс SwX при написании макросов. Эти документы полезны при использовании вместе с инструментом самоанализа. Взятые в одиночку, их трудно читать из-за структуры наследования.
- 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
Запись не является хорошим способом начать учиться писать макросы. Однако это полезно для некоторых диспетчерских операций, таких как копирование / вставка. Для этого включите экспериментальные функции в Сервис -> Параметры -> Дополнительно . В LO 6 есть специальный флажок Включить запись макросов . Затем Инструменты -> Макросы -> Запись макроса .
Еще одна вещь для рассмотрения: для серьезной работы Python-UNO, как правило, является лучшим способом написания макросов, например, из-за структур данных, регулярных выражений и обработки файлов. (C ++ возможен, но не так хорош для большинства макросов. Java - хороший выбор и тесно связан с API UNO, но делает некоторые вещи более сложными, чем необходимо).