Mover una diapositiva a una nueva posición

OpenXML SDK


 string FilePath = @"..\..\..\..\Sample Files\";

string FileName = FilePath + "Mover una diapositiva a una nueva posición.pptx";

MoveSlide(FileName, 1, 2);

// Contando las diapositivas en la presentación.

public static int CountSlides(string presentationFile)

{

    // Abrir la presentación en modo de solo lectura.

    using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))

    {

        // Pasar la presentación al siguiente método CountSlides

        // y devolver el conteo de diapositivas.

        return CountSlides(presentationDocument);

    }

}

// Contar las diapositivas en la presentación.

public static int CountSlides(PresentationDocument presentationDocument)

{

    // Verificar si el objeto de documento es nulo.

    if (presentationDocument == null)

    {

        throw new ArgumentNullException("presentationDocument");

    }

    int slidesCount = 0;

    // Obtener la parte de presentación del documento.

    PresentationPart presentationPart = presentationDocument.PresentationPart;

    // Obtener el conteo de diapositivas de las SlideParts.

    if (presentationPart != null)

    {

        slidesCount = presentationPart.SlideParts.Count();

    }

    // Devolver el conteo de diapositivas al método anterior.

    return slidesCount;

}

// Mover una diapositiva a una posición diferente en el orden de las diapositivas en la presentación.

public static void MoveSlide(string presentationFile, int from, int to)

{

    using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, true))

    {

        MoveSlide(presentationDocument, from, to);

    }

}

// Mover una diapositiva a una posición diferente en el orden de las diapositivas en la presentación.

public static void MoveSlide(PresentationDocument presentationDocument, int from, int to)

{

    if (presentationDocument == null)

    {

        throw new ArgumentNullException("presentationDocument");

    }

    // Llamar al método CountSlides para obtener el número de diapositivas en la presentación.

    int slidesCount = CountSlides(presentationDocument);

    // Verificar que ambas posiciones from y to estén dentro del rango y sean diferentes.

    if (from < 0 || from >= slidesCount)

    {

        throw new ArgumentOutOfRangeException("from");

    }

    if (to < 0 || from >= slidesCount || to == from)

    {

        throw new ArgumentOutOfRangeException("to");

    }

    // Obtener la parte de presentación del documento de presentación.

    PresentationPart presentationPart = presentationDocument.PresentationPart;

    // El conteo de diapositivas no es cero, así que la presentación debe contener diapositivas.

    Presentation presentation = presentationPart.Presentation;

    SlideIdList slideIdList = presentation.SlideIdList;

    // Obtener el ID de la diapositiva fuente.

    SlideId sourceSlide = slideIdList.ChildElements[from] as SlideId;

    SlideId targetSlide = null;

    // Identificar la posición de la diapositiva objetivo después de la cual mover la diapositiva fuente.

    if (to == 0)

    {

        targetSlide = null;

    }

    if (from < to)

    {

        targetSlide = slideIdList.ChildElements[to] as SlideId;

    }

    else

    {

        targetSlide = slideIdList.ChildElements[to - 1] as SlideId;

    }

    // Eliminar la diapositiva fuente de su posición actual.

    sourceSlide.Remove();

    // Insertar la diapositiva fuente en su nueva posición después de la diapositiva objetivo.

    slideIdList.InsertAfter(sourceSlide, targetSlide);

    // Guardar la presentación modificada.

    presentation.Save();

} 

Aspose.Slides


 string FilePath = @"..\..\..\..\Sample Files\";

string FileName = FilePath + "Mover una diapositiva a una nueva posición.pptx";

MoveSlide(FileName, 1, 2);

// Mover una diapositiva a una posición diferente en el orden de las diapositivas en la presentación.

public static void MoveSlide(string presentationFile, int from, int to)

{

    //Instanciar la clase PresentationEx para cargar el archivo PPTX fuente

    using (Presentation pres = new Presentation(presentationFile))

    {

        //Obtener la diapositiva cuya posición debe ser cambiada

        ISlide sld = pres.Slides[from];

        ISlide sld2 = pres.Slides[to];

        //Establecer la nueva posición para la diapositiva

        sld2.SlideNumber = from;

        sld.SlideNumber = to;

        //Guardar el PPTX en disco

        pres.Save(presentationFile,Aspose.Slides.Export.SaveFormat.Pptx);

    }

}

Descargar Código de Muestra