Zarządzanie masterami slajdów w .NET

Przegląd

slide master definiuje wspólne ustawienia projektu dla grupy slajdów. Może zawierać wspólne kształty, loga, tła, style tekstu, ustawienia motywu oraz ustawienia stopki. W programie PowerPoint edytowanie slide mastera jest typowym sposobem utrzymania spójności prezentacji bez powtarzania tego samego formatowania na każdym slajdzie.

Aspose.Slides for .NET obsługuje ten sam model. Prezentacja może zawierać jeden lub więcej masterów slajdów, a każdy master slajdu może zawierać kilka slajdów układu. Normalne slajdy zwykle nie odwołują się bezpośrednio do mastera slajdu. Zamiast tego normalny slajd używa slajdu układu, a ten slajd układu należy do mastera slajdu.

Hierarchia:

  1. Slide master – definiuje wspólny projekt i motyw.
  2. Layout slide – definiuje określony układ pól zastępczych i formatowanie na poziomie układu.
  3. Normal slide – zawiera rzeczywistą treść prezentacji i używa jednego slajdu układu.

Hierarchia masterów slajdów, slajdów układu i slajdów normalnych

W Aspose.Slides master slajd jest reprezentowany przez interfejs IMasterSlide. Wszystkie master slajdy w prezentacji są dostępne poprzez kolekcję Presentation.Masters, która implementuje IMasterSlideCollection.

Dostęp do masterów slajdów

W programie PowerPoint możesz otworzyć widok View > Slide Master.

Polecenie Slide Master na karcie View w PowerPoint

W Aspose.Slides użyj kolekcji Masters, aby uzyskać dostęp do master slajdów:

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);

Możesz także uzyskać master slajd używany przez normalny slajd poprzez jego układ:

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);

Co zawiera master slajdu

Master slajd jest obiektem podobnym do slajdu. Implementuje IBaseSlide, więc udostępnia wiele tych samych właściwości slajdu, które są używane przez normalne i układowe slajdy. Członkowie specyficzni dla mastera są wymienieni na stronie API IMasterSlide.

Często używane członki master slajdu obejmują:

Członek Cel
Background Ustawia tło slajdu na poziomie mastera.
Shapes Przechowuje kształty umieszczone na masterze, takie jak loga, ramki obrazów i wspólny tekst.
LayoutSlides Przechowuje slajdy układu, które należą do mastera.
ThemeManager Udostępnia dostęp do API motywu mastera.
HeaderFooterManager Steruje nagłówkami, stopkami, datami i numerami slajdów dla mastera i jego podrzędnych układów.
GetDependingSlides Zwraca normalne slajdy, które zależą od mastera poprzez ich układy.

Dodaj obraz do mastera slajdu

Kiedy dodajesz obraz do mastera slajdu, pojawia się on na slajdach, które używają układów z tego mastera. Jest to przydatne dla logotypów, znaków wodnych, dekoracyjnych pasków i innych powtarzających się elementów wizualnych.

Poniższy przykład dodaje logo do pierwszego mastera slajdu:

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);

Aby uzyskać więcej informacji o ramkach obrazów, zobacz Picture Frame.

Praca z polami zastępczymi

Pola zastępcze są zazwyczaj definiowane na slajdach układu. Master slajd zapewnia wspólny styl i motyw, które te układy dziedziczą, podczas gdy każdy układ decyduje, które pola zastępcze są dostępne i gdzie są umieszczone.

W PowerPoint polecenia pól zastępczych są dostępne w widoku Slide Master.

Polecenie Insert Placeholder w widoku Slide Master w PowerPoint

Aby dodać nowe pola zastępcze przy użyciu Aspose.Slides, pracuj ze slajdem układu, który należy do mastera:

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);

Możesz także formatować kształty pól zastępczych, które już istnieją na masterze slajdu. Poniższy przykład znajduje pole zastępcze tytułu i stosuje wypełnienie gradientem liniowym:

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;
}

Sformatowane pole zastępcze tytułu dziedziczone przez normalne slajdy

Aby uzyskać więcej opcji dotyczących pól zastępczych i formatowania tekstu, zobacz Set Prompt Text in Placeholder oraz Text Formatting.

Zmień tło mastera slajdu

Tło mastera jest dziedziczone przez układy i slajdy, które go nie nadpisują. Poniższy przykład ustawia jednolity kolor tła dla pierwszego mastera slajdu:

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);

Aby uzyskać powiązane tematy, zobacz Presentation Background oraz Presentation Theme.

Sklonuj master slajdu do innej prezentacji

Użyj IMasterSlideCollection.AddClone, aby skopiować master slajd do innej prezentacji. Skopiowany master może następnie być używany przez układy i slajdy w docelowej prezentacji.

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);

Jeśli potrzebujesz sklonować normalne slajdy razem z ich masterem, zobacz Clone Slides.

Dodaj wiele masterów slajdów

Prezentacja może zawierać wiele master slajdów. Jest to przydatne, gdy różne sekcje wymagają innego brandingu, struktury strony lub ustawień motywu.

Polecenia PowerPoint do wstawiania i zarządzania master slajdami

Poniższy przykład klonuje domyślny master, nadaje klonowi inne tło, tworzy układ pod tym sklonowanym masterem i dodaje nowy slajd oparty na tym układzie:

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);

Porównaj master slajdów

Master slajdy można porównać metodą Equals odziedziczoną po IBaseSlide. Porównanie sprawdza strukturę i statyczną zawartość, taką jak kształty, tekst, formatowanie, animacje i inne ustawienia slajdu. Nie porównuje ono unikalnych identyfikatorów, takich jak ID slajdu, ani dynamicznych wartości pól zastępczych, takich jak bieżąca data.

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);
        }
    }
}

Aby uzyskać więcej informacji, zobacz Compare Presentation Slides.

Ustaw widok master slajdu jako domyślny widok

Użyj właściwości LastView w ViewProperties, aby kontrolować widok, który PowerPoint otwiera jako pierwszy. Poniższy przykład otwiera prezentację w widoku Slide Master:

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

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

Aby uzyskać więcej ustawień widoku, zobacz Save Presentation.

Usuń nieużywane master slajdy

Prezentacje czasami zawierają master slajdy, które nie są już używane przez żadne normalne slajdy. Usunięcie nieużywanych masterów może zmniejszyć rozmiar pliku i uprościć utrzymanie szablonu.

Użyj MasterSlideCollection.RemoveUnused aby usunąć nieużywane mastery z kolekcji Masters:

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

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

Możesz także użyć metody low-code Compress.RemoveUnusedMasterSlides ,

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

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

FAQ

Jaka jest różnica między masterem slajdu a slajdem układu?

Master slajdu definiuje wspólne ustawienia projektu, takie jak motyw, tło, wspólne kształty i style tekstu. Slajd układu należy do mastera slajdu i definiuje określony układ pól zastępczych. Normalny slajd używa slajdu układu, więc dziedziczy zarówno po układzie, jak i po masterze.

Czy jedna prezentacja może zawierać kilka masterów slajdów?

Tak. Prezentacja może zawierać kilka master slajdów. Używaj wielu masterów, gdy różne sekcje wymagają różnych systemów wizualnych lub brandingu.

Czy powinienem dodawać pola zastępcze do mastera slajdu czy do slajdu układu?

W większości przypadków dodawaj pola zastępcze do slajdów układu. Umieść współdzielone elementy wizualne i formatowanie na masterze slajdu, a pola zawartości na układach, które będą używane przez normalne slajdy.

Czy mogę usunąć master slajd, który jest nadal używany?

Nie. Master slajd, który ma zależne slajdy, nie może być bezpiecznie usunięty bezpośrednio. Najpierw przenieś te slajdy do układów pod innym masterem lub użyj metody czyszczenia nieużywanych masterów, która usuwa tylko mastery, które nie są używane.