Prezentáció slide masterek kezelése .NET-ben

Áttekintés

Egy slide master meghatározza a közös tervezési beállításokat egy diacsoport számára. Tartalmazhat közös alakzatokat, logókat, háttérképeket, szövegstílusokat, téma‑beállításokat és láblécbeállításokat. A PowerPointban a slide master szerkesztése a szokásos módja annak, hogy a bemutató egységes maradjon anélkül, hogy minden dián megismételné a formázást.

Aspose.Slides for .NET támogatja ugyanazt a modellt. Egy bemutató egy vagy több master slide‑t tartalmazhat, és minden master slide több layout slide‑t is tartalmazhat. A normál diák általában nem hivatkoznak közvetlenül egy master slide‑ra. Ehelyett egy normál dia egy layout slide‑ot használ, amely egy master slide‑hoz tartozik.

A hierarchia:

  1. Slide master - meghatározza a közös tervezést és témát.
  2. Layout slide - meghatározza a helyőrzők és az elrendezési szintű formázás konkrét elrendezését.
  3. Normal slide - tartalmazza a tényleges bemutató tartalmat, és egy layout slide‑ot használ.

A master diák, layout diák és normál diák hierarchiája

Az Aspose.Slides‑ban a slide master a IMasterSlide interfész által van képviselve. A bemutató összes master slide‑ja elérhető a Presentation.Masters gyűjteményen keresztül, amely a IMasterSlideCollection implementálja.

A slide master-ek elérése

PowerPointban a Slide Master nézetet a View > Slide Master menüpontból nyithatja meg.

A Slide Master parancs a PowerPoint Nézet fülön

Az Aspose.Slides‑ban a Masters gyűjteményt használja a master slide‑ok eléréséhez:

using var presentation = new Presentation("presentation.pptx");

var firstMasterSlide = presentation.Masters[0];
var masterSlideCount = presentation.Masters.Count;
var firstMasterLayoutSlideCount = firstMasterSlide.LayoutSlides.Count;

Console.WriteLine("Master slides: " + masterSlideCount);
Console.WriteLine("Layouts in the first master: " + firstMasterLayoutSlideCount);

Egy normál dia által használt master slide‑ot a saját layoutján keresztül is lekérhetjük:

using var presentation = new Presentation("presentation.pptx");

var slide = presentation.Slides[0];
var layoutSlide = slide.LayoutSlide;
var masterSlide = layoutSlide.MasterSlide;
var masterSlideName = masterSlide.Name;

Console.WriteLine(masterSlideName);

Mit tartalmaz egy Slide Master

A master slide egy dia‑szerű objektum. Implementálja a IBaseSlide interfészt, így ugyanazokat a dia‑tulajdonságokat teszi elérhetővé, mint a normál és layout diák. A master‑specifikus tagok a IMasterSlide API‑oldalon vannak felsorolva.

A gyakran használt master slide tagok a következők:

Tag Leírás
Background Beállítja a master szintű dia háttérét.
Shapes Tárolja a masteren elhelyezett alakzatokat, mint logók, képkockák és megosztott szöveg.
LayoutSlides Tárolja a masterhez tartozó layout diákat.
ThemeManager Hozzáférést biztosít a master téma API‑khoz.
HeaderFooterManager Kezeli a fejléceket, lábléceket, dátumokat és dia számokat a master és annak alatti layoutok számára.
GetDependingSlides Visszaadja azokat a normál diákat, amelyek a layoutjaikon keresztül a masterre támaszkodnak.

Kép hozzáadása a Slide Masterhez

Amikor egy képet ad hozzá egy master slide‑hoz, az a master‑hoz tartozó layout‑okat használó diákon is megjelenik. Hasznos logók, vízjelek, díszszalagok és egyéb ismétlődő vizuális elemek esetén.

using var presentation = new Presentation("presentation.pptx");

var masterSlide = presentation.Masters[0];
var logoBytes = File.ReadAllBytes("logo.png");
var logoImage = presentation.Images.AddImage(logoBytes);

masterSlide.Shapes.AddPictureFrame(
    ShapeType.Rectangle,
    x: 20,
    y: 20,
    width: 80,
    height: 80,
    image: logoImage);

presentation.Save("presentation-with-logo.pptx", SaveFormat.Pptx);

További információ a képkockákról a Picture Frame oldalon található.

Helyőrzőkkel való munka

A helyőrzők általában a layout diákon vannak definiálva. A master slide biztosítja a közös stílust és témát, amelyet a layout‑ok örökölnek, míg minden egyes layout dönt arról, hogy mely helyőrzők állnak rendelkezésre és hol helyezkednek el.

PowerPointban a helyőrzőparancsok a Slide Master nézetben érhetők el.

A Helyőrző beszúrása parancs a PowerPoint Slide Master nézetben

Új helyőrzők hozzáadásához az Aspose.Slides‑ban dolgozzunk a master‑hez tartozó layout slide‑on:

using var presentation = new Presentation("presentation.pptx");

var masterSlide = presentation.Masters[0];
var blankLayoutSlide =
    masterSlide.LayoutSlides.GetByType(SlideLayoutType.Blank) ??
    masterSlide.LayoutSlides.Add(SlideLayoutType.Blank, "Blank");

blankLayoutSlide.PlaceholderManager.AddTextPlaceholder(
    x: 60,
    y: 120,
    width: 600,
    height: 80);

presentation.Slides.AddEmptySlide(blankLayoutSlide);
presentation.Save("presentation-with-placeholder.pptx", SaveFormat.Pptx);

Már meglévő helyőrző alakzatokat is formázhat a master slide‑on. Az alábbi példa megkeresi a cím helyőrzőt és lineáris gradient kitöltést alkalmaz rá:

using var presentation = new Presentation("presentation.pptx");

var masterSlide = presentation.Masters[0];
var titlePlaceholder = FindPlaceholder(masterSlide, PlaceholderType.Title);

if (titlePlaceholder != null)
{
    var redGradientColor = Color.FromArgb(255, 0, 0);
    var purpleGradientColor = Color.FromArgb(128, 0, 128);

    titlePlaceholder.FillFormat.FillType = FillType.Gradient;
    titlePlaceholder.FillFormat.GradientFormat.GradientShape = GradientShape.Linear;
    titlePlaceholder.FillFormat.GradientFormat.GradientStops.Add(0, redGradientColor);
    titlePlaceholder.FillFormat.GradientFormat.GradientStops.Add(255, purpleGradientColor);
}

presentation.Save("presentation-title-style.pptx", SaveFormat.Pptx);

static IAutoShape? FindPlaceholder(IMasterSlide masterSlide, PlaceholderType placeholderType)
{
    foreach (var shape in masterSlide.Shapes)
    {
        if (shape is IAutoShape { Placeholder: not null } autoShape &&
            autoShape.Placeholder.Type == placeholderType)
        {
            return autoShape;
        }
    }

    return null;
}

Formázott cím helyőrző, amelyet a normál diák örökölnek

További helyőrző‑ és szövegformázási lehetőségek a Set Prompt Text in Placeholder és a Text Formatting oldalon találhatók.

Slide Master háttér módosítása

A master háttér öröklődik a layout‑ok és azok a diák számára, amelyek nem írják felül. Az alábbi példa egy egyszínű háttérszínt állít be az első master slide‑ra:

using var presentation = new Presentation("presentation.pptx");

var masterSlide = presentation.Masters[0];

masterSlide.Background.Type = BackgroundType.OwnBackground;
masterSlide.Background.FillFormat.FillType = FillType.Solid;
masterSlide.Background.FillFormat.SolidFillColor.Color = Color.ForestGreen;

presentation.Save("presentation-master-background.pptx", SaveFormat.Pptx);

Kapcsolódó témák: Presentation Background és Presentation Theme.

Slide Master klónozása egy másik bemutatóba

A IMasterSlideCollection.AddClone segítségével egy master slide‑t másolhat egy másik bemutatóba. A másolt master ezután a célbemutató layout‑jai és diái számára használható.

using var sourcePresentation = new Presentation("source.pptx");
using var destinationPresentation = new Presentation("destination.pptx");

var sourceMasterSlide = sourcePresentation.Masters[0];
var clonedMasterSlide = destinationPresentation.Masters.AddClone(sourceMasterSlide);

destinationPresentation.Save("destination-with-master.pptx", SaveFormat.Pptx);

Ha a normál diákot is a saját master‑jével együtt kívánja klónozni, lásd a Clone Slides oldalt.

Több Slide Master hozzáadása

Egy bemutató több master slide‑t is tartalmazhat. Hasznos, ha különböző szakaszok más‑más márkázást, oldalszerkezetet vagy téma‑beállításokat igényelnek.

PowerPoint parancsok a master diák beszúrásához és kezeléséhez

Az alábbi példa klónozza az alapértelmezett master‑t, a klónnak más háttérszínt ad, egy layout‑ot hoz létre a klónozott master alatt, majd egy új diát ad hozzá ehhez a layout‑hoz:

using var presentation = new Presentation("presentation.pptx");

var defaultMasterSlide = presentation.Masters[0];
var sectionMasterSlide = presentation.Masters.AddClone(defaultMasterSlide);

sectionMasterSlide.Background.Type = BackgroundType.OwnBackground;
sectionMasterSlide.Background.FillFormat.FillType = FillType.Solid;
sectionMasterSlide.Background.FillFormat.SolidFillColor.Color = Color.LightSteelBlue;

var sourceBlankLayout =
    defaultMasterSlide.LayoutSlides.GetByType(SlideLayoutType.Blank) ??
    defaultMasterSlide.LayoutSlides[0];
var sectionBlankLayout = sectionMasterSlide.LayoutSlides.AddClone(sourceBlankLayout);

presentation.Slides.AddEmptySlide(sectionBlankLayout);
presentation.Save("presentation-with-multiple-masters.pptx", SaveFormat.Pptx);

Slide Master‑ek összehasonlítása

A master slide‑ek összehasonlíthatók az IBaseSlide által örökölt Equals metódussal. Az összehasonlítás a struktúrát és a statikus tartalmakat (alakzatok, szöveg, formázás, animációk, egyéb dia‑beállítások) vizsgálja. Nem hasonlítja össze az egyedi azonosítókat (például dia‑ID‑k) vagy a dinamikus helyőrzőértékeket (például a aktuális dátumot).

using var firstPresentation = new Presentation("first.pptx");
using var secondPresentation = new Presentation("second.pptx");

var firstPresentationMasterCount = firstPresentation.Masters.Count;
var secondPresentationMasterCount = secondPresentation.Masters.Count;

for (var firstMasterIndex = 0; firstMasterIndex < firstPresentationMasterCount; firstMasterIndex++)
{
    for (var secondMasterIndex = 0; secondMasterIndex < secondPresentationMasterCount; secondMasterIndex++)
    {
        var firstMasterSlide = firstPresentation.Masters[firstMasterIndex];
        var secondMasterSlide = secondPresentation.Masters[secondMasterIndex];
        var areMasterSlidesEqual = firstMasterSlide.Equals(secondMasterSlide);

        if (areMasterSlidesEqual)
        {
            Console.WriteLine(
                "first.pptx master #{0} equals second.pptx master #{1}",
                firstMasterIndex,
                secondMasterIndex);
        }
    }
}

További információ a Compare Presentation Slides oldalon.

Slide Master nézet beállítása alapértelmezett nézetnek

A ViewProperties LastView tulajdonságával szabályozhatja, hogy a PowerPoint melyik nézetet nyissa meg először. Az alábbi példa a bemutatót Slide Master nézetben nyitja meg:

using var presentation = new Presentation("presentation.pptx");

presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("presentation-master-view.pptx", SaveFormat.Pptx);

További nézetbeállítások a Save Presentation oldalon találhatók.

Használaton kívüli master slide‑ok eltávolítása

Előfordulhat, hogy egy bemutató tartalmaz olyan master slide‑okat, amelyeket már egyetlen normál dia sem használ. A használaton kívüli master‑ok eltávolítása csökkentheti a fájlméretet és egyszerűsítheti a sablonkarbantartást.

A Masters gyűjteményből a MasterSlideCollection.RemoveUnused metódussal távolíthatja el a használaton kívüli master‑okat:

using var presentation = new Presentation("presentation.pptx");

presentation.Masters.RemoveUnused(ignorePreserveField: true);
presentation.Save("presentation-clean.pptx", SaveFormat.Pptx);

Alacsony kóddal a Compress.RemoveUnusedMasterSlides metódust is használhatja:

using var presentation = new Presentation("presentation.pptx");

Aspose.Slides.LowCode.Compress.RemoveUnusedMasterSlides(presentation);
presentation.Save("presentation-clean.pptx", SaveFormat.Pptx);

GYIK

Mi a különbség a slide master és a layout slide között?
A slide master a közös tervezési beállításokat (téma, háttér, közös alakzatok, szövegstílusok) határozza meg. Egy layout slide egy master slide‑hoz tartozik, és egy adott helyőrző‑elrendezést definiál. Egy normál dia egy layout slide‑ot használ, így mind a layout, mind a master beállításait örökli.

Tartalmazhat egy bemutató több slide master‑t?
Igen. Egy bemutató több slide master‑t is tartalmazhat. Használjon több master‑t, ha a különböző szakaszok eltérő vizuális rendszert vagy márkázást igényelnek.

Helyőrzőket a master slide‑ra vagy a layout slide‑ra kell-e felvennem?
A legtöbb esetben a helyőrzőket a layout slide‑okra helyezzük. A közös vizuális elemeket és a közös formázást a master slide‑ra, a tartalomhelyőrzőket pedig a layout slide‑okra tesszük.

Törölhetek egy még használatban lévő master slide‑t?
Nem. Egy olyan master slide, amelyhez függő diák tartoznak, nem távolítható el közvetlenül. Először mozgassa át ezeket a diákot egy másik master alatti layout‑ra, vagy használjon olyan takarítási módszert, amely csak a nem használt master slide‑okat távolítja el.