Calc: Как экспортировать ShapeCollection?

Автор eeigor, 4 сентября 2022, 21:48

0 Пользователи и 1 гость просматривают эту тему.

eeigor

Экспортировать будем диаграммы. Среди них есть сгруппированные, наложенные друг на друга.
К сожалению, объект Shape можно экспортировать, а ShapeCollection нет. Могу ошибаться.
Предложите способ экспорта (сохранения на диске) сгруппированных диаграмм как одного рисунка.
Или я не прав: достаточно присвоить объекту oGraphicExporter.SourceDocument не объект oShape...
    oGraphicExporter.SourceDocument = oShape
...а Shape Collection?

Код был предложен @economist:
    Dim sFolder$: sFolder = "D:/ГрафикиПрезентаций/"

    eSheets = ThisComponent.Sheets.createEnumeration()
    oGraphicExporter = CreateUnoService("com.sun.star.drawing.GraphicExportFilter")
    Dim i&  'ScShapeObj index
    While eSheets.hasMoreElements()
        oSheet = eSheets.nextElement()
        oDrawPage = oSheet.DrawPage  '<- ScPageObj
        For i = 0 To oDrawPage.Count - 1
            nShapeCount = nShapeCount + 1
            oShape = oDrawPage(i)  '<- ScShapeObj

            oGraphicExporter.SourceDocument = oShape
            args(0).Name = "URL"
            args(0).Value = "file:///" & sFolder _
             & oSheet.Name & "_" & i + 1 & ".png"  'gif|gpeg
            args(1).Name = "MediaType"
            args(1).Value = "image/png"  'image/gif|image/gpeg
            ' NOTE: Calling filter() starts the export of the graphic file.
            oGraphicExporter.filter args
        Next
    Wend
Ubuntu 18.04 LTS • LibreOffice 7.3.5.2 Community

eeigor

#1
Вопрос снят.
Объект ShapeCollection воспринимается как одна фигура. И экспортируется также. Результат отличный.
Спасибо @economist за пример кода.

P.S. Вопрос возник по той причине, что в контекстном меню у диаграммы есть команда экспорта (Export as Image), а у сгруппированных фигур - нет.
Т. о., экспорт сгруппированных фигур невозможен с помощью меню. Впрочем, у обычной фигуры этой команды тоже нет.
Ubuntu 18.04 LTS • LibreOffice 7.3.5.2 Community

kompilainenn

Фигуры можно выделить, выбрать Файл-Экспорт, флажок Выделенное в диалоге установить, выбрать нужный формат для экспорта и получить картинку. Да, контекстного меню для этого не завезли
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут