Formas y texto
Slides usa el motor Shape compartido para formas, conectores y texto editables. FSlide.insertShape() devuelve una Facade de forma respaldada por la canalización de comandos de Slides.
Insertar una forma
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() puede devolver null cuando el adaptador Shape no está disponible o no puede crear la entrada. Registre las dependencias Shape de la configuración de Slides antes de insertar formas.
Añadir texto enriquecido
if (shape) { const richText = univerAPI.newRichText() .text('Quarterly ') .bold('review') shape.getText() .setRichText(richText) .setHorizontalAlign(univerAPI.Enum.HorizontalAlign.CENTER) .setVerticalAlign(univerAPI.Enum.VerticalAlign.MIDDLE)}Use slide.getShape(id) o slide.getShapes() para recuperar formas. Los métodos comunes actualizan posición, tamaño, visibilidad, nombre y descripción; slide.deleteElement(shape) elimina la forma.
Editar el texto de una forma
Utiliza la forma devuelta por insertShape() a continuación o en el ejemplo anterior. getText() devuelve un objeto FShapeText activo. Lee el texto con getPlainText(), reemplázalo por completo con setText() y configura la fuente, el color y la alineación.
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() reemplaza el texto existente. Utiliza setRichText() para combinar varios estilos. Para editar texto enriquecido existente, llama a getRichText()?.copy(), modifica el constructor y pásalo a setRichText(). Los cambios del constructor no se aplican automáticamente. Consulta también los estilos de texto y los márgenes y la disposición del cuadro de texto.
const richText = univerAPI.newRichText() .text('Quarterly ') .bold('review')shapeText.setRichText(richText)Copiar formato de formas
Selecciona la forma original, activa el pincel y elige la forma de destino. Se copian relleno, contorno, efectos y formato de texto compatible, conservando identidad, geometría, contenido y vínculos de fórmulas del destino. Borrar formato restaura los valores de inserción. SmartArt queda excluido. El plugin UI correspondiente registra esta función automáticamente.
Combinar formas
Seleccione entre 2 y 10 objetos compatibles de una diapositiva y use Combinar formas. Las operaciones son union (todas las áreas), combine (excluir solapamientos), intersect (área común), subtract (restar los demás al objeto principal) y fragment (dividir en regiones). El objeto principal aporta el formato. La combinación sustituye los objetos seleccionados y admite deshacer, rehacer y colaboración.
El comando siguiente usa la selección actual. merged es false si no puede aplicarse. Los objetos deben ser editables y pertenecer al mismo ámbito de grupo. No admite conectores, SmartArt, OLE, gráficos ni tablas; algunos efectos, animaciones y diseños de texto complejos también impiden combinar.
Los cuadros de texto se convierten en contornos y dejan de ser editables como texto. Se requieren los datos exactos de la fuente utilizada. UniverSlidesUIPlugin resuelve las fuentes Web cargadas compatibles; para otros orígenes, configure mergeShapeFontResolver(font, unitId, text). Devuelva un ArrayBuffer o una promesa con la fuente correcta, incluidos peso, estilo y fuente de sustitución, o undefined si no hay coincidencia exacta. Si falta la fuente, se rechaza la operación sin modificar los objetos.
import { MergeSlideShapesCommand } from '@univerjs-pro/slides-ui'const merged = await univerAPI.executeCommand(MergeSlideShapesCommand.id, { operation: 'union',})¿Cómo es esta guía?