WordArt

¿Qué es WordArt?

WordArt o Word Art es una función que te permite aplicar efectos a los textos para hacerlos destacar. Con WordArt, por ejemplo, puedes contornear un texto o llenarlo con un color (o degradado), agregarle efectos 3D, etc. También puedes distorsionar, doblar y estirar la forma de un texto.

WordArt en Microsoft PowerPoint

Para usar WordArt en Microsoft PowerPoint, debes seleccionar una de las plantillas de WordArt predefinidas. Una plantilla de WordArt es un conjunto de efectos que se aplican a un texto o su forma.

WordArt en Aspose.Slides

En Aspose.Slides para PHP a través de Java 20.10, implementamos soporte para WordArt y realizamos mejoras a la función en versiones subsecuentes de Aspose.Slides para PHP a través de Java.

Con Aspose.Slides para PHP a través de Java, puedes crear fácilmente tu propia plantilla de WordArt (un efecto o combinación de efectos) y aplicarla a los textos.

Creando una Plantilla de WordArt Simple y Aplicándola a un Texto

Usando Aspose.Slides

Primero, creamos un texto simple usando este código PHP:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $autoShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
    $textFrame = $autoShape->getTextFrame();
    $portion = $textFrame->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
    $portion->setText("Aspose.Slides");
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Ahora, establecemos la altura de la fuente del texto en un valor más grande para hacer el efecto más notable a través de este código:

  $fontData = new FontData("Arial Black");
  $portion->getPortionFormat()->setLatinFont($fontData);
  $portion->getPortionFormat()->setFontHeight(36);

Usando Microsoft PowerPoint

Ve al menú de efectos de WordArt en Microsoft PowerPoint:

todo:image_alt_text

Desde el menú de la derecha, puedes elegir un efecto de WordArt predefinido. Desde el menú de la izquierda, puedes especificar la configuración para un nuevo WordArt.

Estos son algunos de los parámetros u opciones disponibles:

todo:image_alt_text

Usando Aspose.Slides

Aquí, aplicamos el color de patrón SmallGrid al texto y agregamos un borde de texto negro de 1 de ancho usando este código:

  $portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Pattern);
  $portion->getPortionFormat()->getFillFormat()->getPatternFormat()->getForeColor()->setColor(java("java.awt.Color")->ORANGE);
  $portion->getPortionFormat()->getFillFormat()->getPatternFormat()->getBackColor()->setColor(java("java.awt.Color")->WHITE);
  $portion->getPortionFormat()->getFillFormat()->getPatternFormat()->setPatternStyle(PatternStyle->SmallGrid);
  $portion->getPortionFormat()->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
  $portion->getPortionFormat()->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);

El texto resultante:

todo:image_alt_text

Aplicando Otros Efectos de WordArt

Usando Microsoft PowerPoint

Desde la interfaz del programa, puedes aplicar estos efectos a un texto, bloque de texto, forma o elemento similar:

todo:image_alt_text

Por ejemplo, se pueden aplicar efectos de Sombra, Reflexión y Resplandor a un texto; los efectos de Formato 3D y Rotación 3D pueden aplicarse a un bloque de texto; la propiedad de Bordes Suaves se puede aplicar a un Objeto de Forma (aún tiene un efecto cuando no se establece ninguna propiedad de Formato 3D).

Aplicando Efectos de Sombra

Aquí, pretendemos establecer las propiedades relacionadas con un texto solamente. Aplicamos el efecto de sombra a un texto usando este código:

  $portion->getPortionFormat()->getEffectFormat()->enableOuterShadowEffect();
  $portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->getShadowColor()->setColor(java("java.awt.Color")->BLACK);
  $portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setScaleHorizontal(100);
  $portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setScaleVertical(65);
  $portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setBlurRadius(4.73);
  $portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setDirection(230);
  $portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setDistance(2);
  $portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setSkewHorizontal(30);
  $portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setSkewVertical(0);
  $portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->getShadowColor()->getColorTransform()->add(ColorTransformOperation->SetAlpha, 0.32);

La API de Aspose.Slides admite tres tipos de sombras: OuterShadow, InnerShadow y PresetShadow.

Con PresetShadow, puedes aplicar una sombra a un texto (usando valores preestablecidos).

Usando Microsoft PowerPoint

En PowerPoint, puedes usar un tipo de sombra. Aquí hay un ejemplo:

todo:image_alt_text

Usando Aspose.Slides

Aspose.Slides, en realidad, te permite aplicar dos tipos de sombras a la vez: InnerShadow y PresetShadow.

Notas:

  • Cuando se usan juntos OuterShadow y PresetShadow, solo se aplica el efecto OuterShadow.
  • Si se usan simultáneamente OuterShadow e InnerShadow, el efecto resultante o aplicado depende de la versión de PowerPoint. Por ejemplo, en PowerPoint 2013, el efecto se duplica. Pero en PowerPoint 2007, se aplica el efecto OuterShadow.

Aplicando Reflexión a los Textos

Agregamos reflexión al texto a través de este código de muestra:

  $portion->getPortionFormat()->getEffectFormat()->enableReflectionEffect();
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setBlurRadius(0.5);
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setDistance(4.72);
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setStartPosAlpha(0.0);
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setEndPosAlpha(60.0);
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setDirection(90);
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setScaleHorizontal(100);
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setScaleVertical(-100);
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setStartReflectionOpacity(60.0);
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setEndReflectionOpacity(0.9);
  $portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setRectangleAlign(RectangleAlignment->BottomLeft);

Aplicando Efecto de Resplandor a los Textos

Aplicamos el efecto de resplandor al texto para hacerlo brillar o destacar usando este código:

  $portion->getPortionFormat()->getEffectFormat()->enableGlowEffect();
  $portion->getPortionFormat()->getEffectFormat()->getGlowEffect()->getColor()->setR(255);
  $portion->getPortionFormat()->getEffectFormat()->getGlowEffect()->getColor()->getColorTransform()->add(ColorTransformOperation->SetAlpha, 0.54);
  $portion->getPortionFormat()->getEffectFormat()->getGlowEffect()->setRadius(7);

El resultado de la operación:

todo:image_alt_text

Usando Transformaciones en WordArt

Usamos la propiedad Transform (inherente en todo el bloque de texto) a través de este código:

  $textFrame->getTextFrameFormat()->setTransform(TextShapeType::ArchUpPour);

El resultado:

todo:image_alt_text

Usando PowerPoint

Para acceder a los tipos de transformación predefinidos, ve a: Formato -> Efecto de texto -> Transformar

Usando Aspose.Slides

Para seleccionar un tipo de transformación, usa el enum TextShapeType.

Aplicando efectos 3D a Textos y Formas

Establecemos un efecto 3D a una forma de texto usando este código de muestra:

  $autoShape->getThreeDFormat()->getBevelBottom()->setBevelType(BevelPresetType::Circle);
  $autoShape->getThreeDFormat()->getBevelBottom()->setHeight(10.5);
  $autoShape->getThreeDFormat()->getBevelBottom()->setWidth(10.5);
  $autoShape->getThreeDFormat()->getBevelTop()->setBevelType(BevelPresetType::Circle);
  $autoShape->getThreeDFormat()->getBevelTop()->setHeight(12.5);
  $autoShape->getThreeDFormat()->getBevelTop()->setWidth(11);
  $autoShape->getThreeDFormat()->getExtrusionColor()->setColor(java("java.awt.Color")->ORANGE);
  $autoShape->getThreeDFormat()->setExtrusionHeight(6);
  $autoShape->getThreeDFormat()->getContourColor()->setColor(java("java.awt.Color")->RED);
  $autoShape->getThreeDFormat()->setContourWidth(1.5);
  $autoShape->getThreeDFormat()->setDepth(3);
  $autoShape->getThreeDFormat()->setMaterial(MaterialPresetType::Plastic);
  $autoShape->getThreeDFormat()->getLightRig()->setDirection(LightingDirection::Top);
  $autoShape->getThreeDFormat()->getLightRig()->setLightType(LightRigPresetType::Balanced);
  $autoShape->getThreeDFormat()->getLightRig()->setRotation(0, 0, 40);
  $autoShape->getThreeDFormat()->getCamera()->setCameraType(CameraPresetType::PerspectiveContrastingRightFacing);

El texto y su forma resultantes:

todo:image_alt_text

Aplicamos un efecto 3D al texto con este código PHP:

  $textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelBottom()->setBevelType(BevelPresetType::Circle);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelBottom()->setHeight(3.5);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelBottom()->setWidth(3.5);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelTop()->setBevelType(BevelPresetType::Circle);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelTop()->setHeight(4);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelTop()->setWidth(4);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getExtrusionColor()->setColor(java("java.awt.Color")->ORANGE);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->setExtrusionHeight(6);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getContourColor()->setColor(java("java.awt.Color")->RED);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->setContourWidth(1.5);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->setDepth(3);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->setMaterial(MaterialPresetType::Plastic);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getLightRig()->setDirection(LightingDirection::Top);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getLightRig()->setLightType(LightRigPresetType::Balanced);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getLightRig()->setRotation(0, 0, 40);
  $textFrame->getTextFrameFormat()->getThreeDFormat()->getCamera()->setCameraType(CameraPresetType::PerspectiveContrastingRightFacing);

El resultado de la operación:

todo:image_alt_text

Aplicar Efectos de Sombra Exterior a los Textos

Aspose.Slides para PHP a través de Java proporciona las clases IOuterShadow y IInnerShadow que te permiten aplicar efectos de sombra a un texto llevado por TextFrame. Sigue estos pasos:

  1. Crea una instancia de la clase Presentation.
  2. Obtén la referencia de una diapositiva usando su índice.
  3. Agrega una AutoShape de tipo Rectángulo a la diapositiva.
  4. Accede al TextFrame asociado con la AutoShape.
  5. Establece el FillType de la AutoShape en NoFill.
  6. Instancia la clase OuterShadow.
  7. Establece el BlurRadius de la sombra.
  8. Establece la Dirección de la sombra.
  9. Establece la Distancia de la sombra.
  10. Establece el RectangleAlign en TopLeft.
  11. Establece el PresetColor de la sombra en Negro.
  12. Escribe la presentación como un archivo PPTX.

Este código de muestra —una implementación de los pasos anteriores— muestra cómo aplicar el efecto de sombra exterior a un texto:

  $pres = new Presentation();
  try {
    # Obtener referencia de la diapositiva
    $sld = $pres->getSlides()->get_Item(0);
    # Agregar una AutoShape de tipo Rectángulo
    $ashp = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 75, 150, 50);
    # Agregar TextFrame al Rectángulo
    $ashp->addTextFrame("Aspose TextBox");
    # Deshabilitar el relleno de la forma en caso de que queramos obtener sombra del texto
    $ashp->getFillFormat()->setFillType(FillType::NoFill);
    # Agregar sombra exterior y establecer todos los parámetros necesarios
    $ashp->getEffectFormat()->enableOuterShadowEffect();
    $shadow = $ashp->getEffectFormat()->getOuterShadowEffect();
    $shadow->setBlurRadius(4.0);
    $shadow->setDirection(45);
    $shadow->setDistance(3);
    $shadow->setRectangleAlign(RectangleAlignment->TopLeft);
    $shadow->getShadowColor()->setPresetColor(PresetColor->Black);
    # Escribir la presentación en disco
    $pres->save("pres_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Aplicar Efecto de Sombra Interior a las Formas

Sigue estos pasos:

  1. Crea una instancia de la clase Presentation.
  2. Obtén una referencia de la diapositiva.
  3. Agrega una AutoShape de tipo Rectángulo.
  4. Habilita el InnerShadowEffect.
  5. Establece todos los parámetros necesarios.
  6. Establece el ColorType como Esquema.
  7. Establece el Color del Esquema.
  8. Escribe la presentación como un archivo PPTX .

Este código de muestra (basado en los pasos anteriores) muestra cómo agregar un conector entre dos formas:

  $pres = new Presentation();
  try {
    # Obtener referencia de la diapositiva
    $slide = $pres->getSlides()->get_Item(0);
    # Agregar una AutoShape de tipo Rectángulo
    $ashp = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 75, 400, 300);
    $ashp->getFillFormat()->setFillType(FillType::NoFill);
    # Agregar TextFrame al Rectángulo
    $ashp->addTextFrame("Aspose TextBox");
    $port = $ashp->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
    $pf = $port->getPortionFormat();
    $pf->setFontHeight(50);
    # Habilitar InnerShadowEffect
    $ef = $pf->getEffectFormat();
    $ef->enableInnerShadowEffect();
    # Establecer todos los parámetros necesarios
    $ef->getInnerShadowEffect()->setBlurRadius(8.0);
    $ef->getInnerShadowEffect()->setDirection(90.0);
    $ef->getInnerShadowEffect()->setDistance(6.0);
    $ef->getInnerShadowEffect()->getShadowColor()->setB(189);
    # Establecer ColorType como Esquema
    $ef->getInnerShadowEffect()->getShadowColor()->setColorType(ColorType::Scheme);
    # Establecer Color del Esquema
    $ef->getInnerShadowEffect()->getShadowColor()->setSchemeColor(SchemeColor->Accent1);
    # Guardar Presentación
    $pres->save("WordArt_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }