Añadir formas de línea a presentaciones en PHP

Crear una línea simple

Para agregar una línea simple a una diapositiva seleccionada de la presentación, siga los pasos a continuación:

  • Crear una instancia de la clase Presentation.
  • Obtener la referencia de una diapositiva usando su índice.
  • Añadir un AutoShape de tipo Línea mediante el método addAutoShape expuesto por el objeto IShapeCollection.
  • Guardar la presentación modificada como archivo PPTX.

En el ejemplo que se muestra a continuación, hemos añadido una línea a la primera diapositiva de la presentación.

  # Instanciar la clase PresentationEx que representa el archivo PPTX
  $pres = new Presentation();
  try {
    # Obtener la primera diapositiva
    $sld = $pres->getSlides()->get_Item(0);
    # Añadir un AutoShape de tipo línea
    $sld->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
    # Guardar el PPTX en disco
    $pres->save("LineShape.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Crear una línea con forma de flecha

Aspose.Slides for PHP via Java también permite a los desarrolladores configurar algunas propiedades de la línea para que resulte más atractiva. Intentemos configurar algunas propiedades de una línea para que tenga forma de flecha. Siga los pasos a continuación para hacerlo:

  • Crear una instancia de la clase Presentation.
  • Obtener la referencia de una diapositiva usando su índice.
  • Añadir un AutoShape de tipo Línea mediante el método addAutoShape expuesto por el objeto IShapeCollection.
  • Establecer el Line Style a uno de los estilos ofrecidos por Aspose.Slides for PHP via Java.
  • Establecer el Ancho de la línea.
  • Establecer el Dash Style de la línea a uno de los estilos ofrecidos por Aspose.Slides for PHP via Java.
  • Establecer el Arrow Head Style y la Length del punto de inicio de la línea.
  • Establecer el Arrow Head Style y la Length del punto final de la línea.
  • Guardar la presentación modificada como archivo PPTX.
  # Instanciar la clase PresentationEx que representa el archivo PPTX
  $pres = new Presentation();
  try {
    # Obtener la primera diapositiva
    $sld = $pres->getSlides()->get_Item(0);
    # Añadir un AutoShape de tipo línea
    $shp = $sld->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
    # Aplicar algo de formato a la línea
    $shp->getLineFormat()->setStyle(LineStyle->ThickBetweenThin);
    $shp->getLineFormat()->setWidth(10);
    $shp->getLineFormat()->setDashStyle(LineDashStyle->DashDot);
    $shp->getLineFormat()->setBeginArrowheadLength(LineArrowheadLength->Short);
    $shp->getLineFormat()->setBeginArrowheadStyle(LineArrowheadStyle->Oval);
    $shp->getLineFormat()->setEndArrowheadLength(LineArrowheadLength->Long);
    $shp->getLineFormat()->setEndArrowheadStyle(LineArrowheadStyle->Triangle);
    $shp->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $shp->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(new java("java.awt.Color", PresetColor->Maroon));
    # Guardar el PPTX en disco
    $pres->save("LineShape.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Preguntas frecuentes

¿Puedo convertir una línea normal en un conector para que se “ajuste” a las formas?

No. Una línea normal (un AutoShape de tipo Line) no se convierte automáticamente en un conector. Para que se ajuste a las formas, utilice el tipo Connector dedicado y las APIs correspondientes para conexiones.

¿Qué debo hacer si las propiedades de una línea se heredan del tema y es difícil determinar los valores finales?

Lea las propiedades efectivas a través de LineFormatEffectiveData/LineFillFormatEffectiveData — estos ya tienen en cuenta la herencia y los estilos del tema.

¿Puedo bloquear una línea contra la edición (movimiento, redimensionado)?

Sí. Las formas proporcionan objetos de bloqueo que le permiten denegar operaciones de edición.