Фигуры и текст

Slides использует общий движок Shape для редактируемых фигур, соединителей и текста. FSlide.insertShape() возвращает Facade фигуры, работающий через командный конвейер Slides.

Вставка фигуры

TypeScript
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.

Добавление форматированного текста

TypeScript
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() заменяет его целиком; методы форматирования задают шрифт, цвет и выравнивание.

TypeScript
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(). Изменения построителя не применяются автоматически. См. также стили текста и отступы и компоновку текстового блока.

TypeScript
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, если точного соответствия нет. Отсутствие шрифта отменяет объединение без изменения объектов.

TypeScript
import { MergeSlideShapesCommand } from '@univerjs-pro/slides-ui'const merged = await univerAPI.executeCommand(MergeSlideShapesCommand.id, {  operation: 'union',})

Насколько полезно это руководство?

© 2026 DreamNum Co., Ltd.