Фигуры и текст
Slides использует общий движок Shape для редактируемых фигур, соединителей и текста. FSlide.insertShape() возвращает Facade фигуры, работающий через командный конвейер Slides.
Вставка фигуры
const slide = univerAPI.getActivePresentation()?.getActiveSlide()if (!slide) { throw new Error('No active slide')}const shape = slide.insertShape({ shapeType: univerAPI.Enum.ShapeTypeEnum.RoundRect, transform: { left: 80, top: 64, width: 320, height: 120 }, visible: true, selectable: true, shapeData: { fill: { fillType: univerAPI.Enum.ShapeFillEnum.SolidFill, color: '#dbeafe', }, },})insertShape() может вернуть null, если адаптер Shape недоступен или входные данные нельзя создать. Перед вставкой зарегистрируйте зависимости Shape из конфигурации Slides.
Добавление форматированного текста
if (shape) { const richText = univerAPI.newRichText() .text('Quarterly ') .bold('review') shape.getText() .setRichText(richText) .setHorizontalAlign(univerAPI.Enum.HorizontalAlign.CENTER) .setVerticalAlign(univerAPI.Enum.VerticalAlign.MIDDLE)}Получайте фигуры через slide.getShape(id) или slide.getShapes(). Общие методы изменяют положение, размер, видимость, имя и описание; slide.deleteElement(shape) удаляет фигуру.
Редактирование текста фигуры
Используйте фигуру, возвращённую insertShape() ниже или в предыдущем примере. getText() возвращает активный объект FShapeText. Метод getPlainText() читает текст, setText() заменяет его целиком; методы форматирования задают шрифт, цвет и выравнивание.
if (!shape) throw new Error('Shape is not available')const shapeText = shape.getText()console.log(shapeText.getPlainText())shapeText .setText('Quarterly review') .setFontSize(18) .setColor('#2563eb') .setBold(true) .setHorizontalAlign(univerAPI.Enum.HorizontalAlign.CENTER) .setVerticalAlign(univerAPI.Enum.VerticalAlign.MIDDLE)setText() заменяет существующий текст. Для нескольких стилей используйте setRichText(). Чтобы изменить существующий форматированный текст, вызовите getRichText()?.copy(), измените полученный построитель и передайте его в setRichText(). Изменения построителя не применяются автоматически. См. также стили текста и отступы и компоновку текстового блока.
const richText = univerAPI.newRichText() .text('Quarterly ') .bold('review')shapeText.setRichText(richText)Копирование формата фигур
Выберите исходную фигуру, включите копирование формата и выберите целевую. Копируются заливка, контур, эффекты и поддерживаемое оформление текста; идентификатор, геометрия, текст и связи формул цели сохраняются. Очистка формата восстанавливает настройки вставки. SmartArt исключён. Соответствующий UI-плагин регистрирует поведение автоматически.
Объединение фигур
Выберите 2–10 поддерживаемых объектов на одном слайде и выполните объединение фигур. Операции: union (все области), combine (исключить пересечения), intersect (общая область), subtract (вычесть остальные из основного объекта), fragment (разделить на области). Оформление берётся из основного объекта. Объединение заменяет выбранные объекты и поддерживает отмену, повтор и совместную работу.
Команда ниже использует текущее выделение. Если её нельзя применить, merged равен false. Объекты должны быть редактируемыми и находиться на одном уровне группы. Соединители, SmartArt, OLE, диаграммы и таблицы не поддерживаются; некоторые эффекты, анимации и сложная разметка текста также блокируют объединение.
Текстовые блоки преобразуются в контуры и больше не редактируются как текст. Нужны точные данные шрифта, используемого при отрисовке. UniverSlidesUIPlugin определяет поддерживаемые загруженные Web-шрифты; для других источников задайте mergeShapeFontResolver(font, unitId, text). Возвращайте ArrayBuffer или Promise с нужным начертанием, насыщенностью и подстановочным шрифтом, либо undefined, если точного соответствия нет. Отсутствие шрифта отменяет объединение без изменения объектов.
import { MergeSlideShapesCommand } from '@univerjs-pro/slides-ui'const merged = await univerAPI.executeCommand(MergeSlideShapesCommand.id, { operation: 'union',})Насколько полезно это руководство?