Formes et texte
Slides utilise le moteur Shape partagé pour les formes, connecteurs et textes modifiables. FSlide.insertShape() renvoie une Facade de forme reliée au pipeline de commandes Slides.
Insérer une forme
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() peut renvoyer null si l’adaptateur Shape est indisponible ou si l’entrée ne peut pas être créée. Enregistrez les dépendances Shape de la configuration Slides avant l’insertion.
Ajouter du texte enrichi
if (shape) { const richText = univerAPI.newRichText() .text('Quarterly ') .bold('review') shape.getText() .setRichText(richText) .setHorizontalAlign(univerAPI.Enum.HorizontalAlign.CENTER) .setVerticalAlign(univerAPI.Enum.VerticalAlign.MIDDLE)}Utilisez slide.getShape(id) ou slide.getShapes() pour retrouver les formes. Les méthodes communes modifient position, taille, visibilité, nom et description ; slide.deleteElement(shape) supprime la forme.
Modifier le texte d’une forme
Utilisez la forme renvoyée par insertShape() ci-dessous ou dans l’exemple précédent. getText() renvoie un objet FShapeText actif. Lisez le texte avec getPlainText(), remplacez-le entièrement avec setText() et réglez la police, la couleur et l’alignement.
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() remplace le texte existant. Utilisez setRichText() pour combiner plusieurs styles. Pour modifier le texte enrichi existant, appelez getRichText()?.copy(), modifiez le constructeur puis transmettez-le à setRichText(). Ses modifications ne sont pas appliquées automatiquement. Voir aussi les styles de texte et les marges et la disposition du bloc de texte.
const richText = univerAPI.newRichText() .text('Quarterly ') .bold('review')shapeText.setRichText(richText)Reproduire la mise en forme des formes
Sélectionnez la forme source, activez le pinceau puis choisissez la cible. Il copie remplissage, contour, effets et styles de texte pris en charge en conservant identité, géométrie, contenu et liaisons de formules de la cible. Effacer la mise en forme restaure les valeurs d’insertion. SmartArt est exclu. Le plugin UI correspondant active ce comportement automatiquement.
Fusionner les formes
Sélectionnez 2 à 10 objets compatibles sur une même diapositive, puis utilisez la fusion de formes. Les opérations sont union (toutes les zones), combine (exclure les chevauchements), intersect (zone commune), subtract (soustraire les autres de l’objet principal) et fragment (diviser en régions). L’objet principal fournit la mise en forme. La fusion remplace les objets sélectionnés et prend en charge annulation, rétablissement et collaboration.
La commande ci-dessous utilise la sélection courante. merged vaut false si elle ne peut pas être appliquée. Les objets doivent être modifiables et appartenir au même niveau de groupe. Connecteurs, SmartArt, OLE, graphiques et tableaux sont exclus ; certains effets, animations et mises en page de texte complexes empêchent également la fusion.
Les zones de texte sont converties en contours et ne sont plus modifiables comme texte. Les données exactes de la police affichée sont nécessaires. UniverSlidesUIPlugin résout les polices Web chargées compatibles ; pour d’autres sources, configurez mergeShapeFontResolver(font, unitId, text). Renvoyez un ArrayBuffer ou une promesse avec la police correspondant au poids, au style et à la substitution utilisés, ou undefined sans correspondance exacte. Une police manquante fait échouer la fusion sans modifier les objets.
import { MergeSlideShapesCommand } from '@univerjs-pro/slides-ui'const merged = await univerAPI.executeCommand(MergeSlideShapesCommand.id, { operation: 'union',})Que pensez-vous de ce guide ?