Dia hozzáadása a prezentációhoz

OpenXML prezentáció

Az alábbi funkcióban alapértelmezés szerint egy dia kerül hozzáadásra a prezentációhoz. Itt egy új diát adunk hozzá a 2. indexben, amelyben némi szöveg van.


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

string FileName = FilePath + "Adding Slide to Presentation.pptx";

InsertNewSlide(FileName, 1, "My new slide");

// Diát szúr be a megadott prezentációba.

public static void InsertNewSlide(string presentationFile, int position, string slideTitle)

{

    // A forrásdokumentumot olvasás/írás módban nyitja meg. 

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

    {

        // Átadja a forrásdokumentumot, a beillesztendő dia pozícióját és címét a következő metódusnak.

        InsertNewSlide(presentationDocument, position, slideTitle);

    }

}

// A megadott diát a prezentációba a megadott pozícióban szúrja be.

public static void InsertNewSlide(PresentationDocument presentationDocument, int position, string slideTitle)

{

    if (presentationDocument == null)

    {

        throw new ArgumentNullException("presentationDocument");

    }

    if (slideTitle == null)

    {

        throw new ArgumentNullException("slideTitle");

    }

    PresentationPart presentationPart = presentationDocument.PresentationPart;

    // Ellenőrzi, hogy a prezentáció nem üres.

    if (presentationPart == null)

    {

        throw new InvalidOperationException("The presentation document is empty.");

    }

    // Egy új dia deklarálása és példányosítása.

    Slide slide = new Slide(new CommonSlideData(new ShapeTree()));

    uint drawingObjectId = 1;

    // A dia tartalmának felépítése.            

    // A új dia nem vizuális tulajdonságainak megadása.

    NonVisualGroupShapeProperties nonVisualProperties = slide.CommonSlideData.ShapeTree.AppendChild(new NonVisualGroupShapeProperties());

    nonVisualProperties.NonVisualDrawingProperties = new NonVisualDrawingProperties() { Id = 1, Name = "" };

    nonVisualProperties.NonVisualGroupShapeDrawingProperties = new NonVisualGroupShapeDrawingProperties();

    nonVisualProperties.ApplicationNonVisualDrawingProperties = new ApplicationNonVisualDrawingProperties();

    // A új dia csoport alakzat tulajdonságainak megadása.

    slide.CommonSlideData.ShapeTree.AppendChild(new GroupShapeProperties());

    // A új dia cím alakzatának deklarálása és példányosítása.

    Shape titleShape = slide.CommonSlideData.ShapeTree.AppendChild(new Shape());

    drawingObjectId++;

    // A cím alakzat szükséges tulajdonságainak megadása. 

    titleShape.NonVisualShapeProperties = new NonVisualShapeProperties

        (new NonVisualDrawingProperties() { Id = drawingObjectId, Name = "Title" },

        new NonVisualShapeDrawingProperties(new Drawing.ShapeLocks() { NoGrouping = true }),

        new ApplicationNonVisualDrawingProperties(new PlaceholderShape() { Type = PlaceholderValues.Title }));

    titleShape.ShapeProperties = new ShapeProperties();

    // A cím alakzat szövegének megadása.

    titleShape.TextBody = new TextBody(new Drawing.BodyProperties(),

            new Drawing.ListStyle(),

            new Drawing.Paragraph(new Drawing.Run(new Drawing.Text() { Text = slideTitle })));

    // A új dia főtest alakzatának deklarálása és példányosítása.

    Shape bodyShape = slide.CommonSlideData.ShapeTree.AppendChild(new Shape());

    drawingObjectId++;

    // A főtest alakzat szükséges tulajdonságainak megadása.

    bodyShape.NonVisualShapeProperties = new NonVisualShapeProperties(new NonVisualDrawingProperties() { Id = drawingObjectId, Name = "Content Placeholder" },

            new NonVisualShapeDrawingProperties(new Drawing.ShapeLocks() { NoGrouping = true }),

            new ApplicationNonVisualDrawingProperties(new PlaceholderShape() { Index = 1 }));

    bodyShape.ShapeProperties = new ShapeProperties();

    // A főtest alakzat szövegének megadása.

    bodyShape.TextBody = new TextBody(new Drawing.BodyProperties(),

            new Drawing.ListStyle(),

            new Drawing.Paragraph());

    // A új dia részének létrehozása.

    SlidePart slidePart = presentationPart.AddNewPart<SlidePart>();

    // Az új dia rész mentése.

    slide.Save(slidePart);

    // A dia ID lista módosítása a prezentáció részben.

    // A dia ID lista nem lehet null.

    SlideIdList slideIdList = presentationPart.Presentation.SlideIdList;

    // A legmagasabb dia ID megtalálása az aktuális listában.

    uint maxSlideId = 1;

    SlideId prevSlideId = null;

    foreach (SlideId slideId in slideIdList.ChildElements)

    {

        if (slideId.Id > maxSlideId)

        {

            maxSlideId = slideId.Id;

        }

        position--;

        if (position == 0)

        {

            prevSlideId = slideId;

        }

    }

    maxSlideId++;

    // Az előző dia ID-jének lekérése.

    SlidePart lastSlidePart;

    if (prevSlideId != null)

    {

        lastSlidePart = (SlidePart)presentationPart.GetPartById(prevSlideId.RelationshipId);

    }

    else

    {

        lastSlidePart = (SlidePart)presentationPart.GetPartById(((SlideId)(slideIdList.ChildElements[0])).RelationshipId);

    }

    // Az előző diával megegyező diaelrendezés használata.

    if (null != lastSlidePart.SlideLayoutPart)

    {

        slidePart.AddPart(lastSlidePart.SlideLayoutPart);

    }

    // Az új dia beszúrása a dia listába az előző dia után.

    SlideId newSlideId = slideIdList.InsertAfter(new SlideId(), prevSlideId);

    newSlideId.Id = maxSlideId;

    newSlideId.RelationshipId = presentationPart.GetIdOfPart(slidePart);

    // A módosított prezentáció mentése.

    presentationPart.Presentation.Save();

}

}

Aspose.Slides

Minden PowerPoint prezentációfájl egy Main Master slide és további Normal slides elemet tartalmaz. Ez azt jelenti, hogy egy prezentációfájl legalább egy vagy több diát tartalmaz. Fontos tudni, hogy a slide‑ nélküli prezentációfájlok nem támogatottak az Aspose.Slides for .NET által. Minden dia meghatározott pozícióval és egy unique Id‑vel rendelkezik. A slide Id tartománya 0‑tól 255‑ig terjed a master diák esetén, és 256‑tól 65535‑ig a normál diák esetén.

Az Aspose.Slides for .NET lehetővé teszi a fejlesztők számára, hogy üres diákat adjanak a prezentációkhoz a Presentation objektum által biztosított AddEmptySlide metódus használatával. Üres dia hozzáadásához a prezentációhoz kövesse az alábbi lépéseket:

  • Hozzon létre egy példányt a Presentation osztályból
  • Hívja meg a Presentation objektum által biztosított AddEmptySlide metódust
  • Végezzen némi műveletet az újonnan hozzáadott üres diával
  • Adjon hozzá egy újabb diát, és szúrjon be szöveget.
  • Végül írja ki a PPT fájlt a Presentation objektum által biztosított Write metódus használatával

 string FileName = FilePath + "Adding Slide to Presentation.pptx";

//Példányosítja a PresentationEx osztályt, amely a PPT fájlt képviseli

Presentation pres = new Presentation();

//Üres dia alapértelmezés szerint hozzáadódik, amikor létrehozzák

//a prezentációt az alapértelmezett konstruktorból

//Üres dia hozzáadása a prezentációhoz és a hivatkozás lekérése

//az üres diáról

ISlide slide = pres.Slides.AddEmptySlide(pres.LayoutSlides[0]);

//Az eredmény mentése lemezre

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

Minta kód letöltése