Zarządzanie wzorcami slajdów w C++

Przegląd

Wzorzec slajdu definiuje wspólne ustawienia projektowe dla grupy slajdów. Może zawierać wspólne kształty, logotypy, tła, style tekstu, ustawienia motywu oraz stopki. W PowerPoint edycja wzorca slajdu jest typowym sposobem zapewnienia spójności prezentacji bez powtarzania tego samego formatowania na każdym slajdzie.

Aspose.Slides dla C++ obsługuje ten sam model. Prezentacja może zawierać jeden lub więcej wzorców slajdów, a każdy wzorzec może zawierać kilka slajdów układu. Zwykłe slajdy zazwyczaj nie odwołują się bezpośrednio do wzorca. Zamiast tego używają slajdu układu, a ten slajd układu należy do wzorca.

Hierarchia wygląda następująco:

  1. Wzorzec slajdu – definiuje współdzielony projekt i motyw.
  2. Slajd układu – definiuje konkretne rozmieszczenie elementów zastępczych i formatowanie na poziomie układu.
  3. Zwykły slajd – zawiera rzeczywistą treść prezentacji i korzysta z jednego slajdu układu.

Hierarchia wzorców slajdów, slajdów układu i zwykłych slajdów

W Aspose.Slides wzorzec slajdu jest reprezentowany przez interfejs IMasterSlide. Wszystkie wzorce slajdów w prezentacji są dostępne przez kolekcję Presentation::get_Masters, która implementuje IMasterSlideCollection.

Dostęp do wzorców slajdów

W PowerPoint możesz otworzyć widok Wzorca slajdu z Widok > Wzorzec slajdu.

Polecenie Wzorzec slajdu na karcie Widok w PowerPoint

W Aspose.Slides użyj kolekcji get_Masters() aby uzyskać dostęp do wzorców slajdów:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto firstMasterSlide = presentation->get_Master(0);
auto masterSlideCount = presentation->get_Masters()->get_Count();
auto firstMasterLayoutSlideCount = firstMasterSlide->get_LayoutSlides()->get_Count();

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

presentation->Dispose();

Możesz także pobrać wzorzec slajdu używany przez zwykły slajd poprzez jego układ:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto slide = presentation->get_Slide(0);
auto layoutSlide = slide->get_LayoutSlide();
auto masterSlide = layoutSlide->get_MasterSlide();
auto masterSlideName = masterSlide->get_Name();

System::Console::WriteLine(masterSlideName);

presentation->Dispose();

Co zawiera wzorzec slajdu

Wzorzec slajdu jest obiektem podobnym do slajdu. Implementuje IBaseSlide, więc udostępnia wiele tych samych właściwości slajdu używanych przez zwykłe i układowe slajdy. Członkowie specyficzni dla wzorca są wymienieni na stronie API IMasterSlide.

Często używane członki wzorca slajdu to:

Członek Cel
get_Background() Ustawia tło slajdu na poziomie wzorca.
get_Shapes() Przechowuje kształty umieszczone na wzorcu, takie jak logotypy, ramki obrazu i wspólny tekst.
get_LayoutSlides() Przechowuje slajdy układu należące do wzorca.
get_ThemeManager() Zapewnia dostęp do interfejsów API motywu wzorca.
get_HeaderFooterManager() Steruje nagłówkami, stopkami, datami i numerami slajdów dla wzorca oraz jego układów podrzędnych.
GetDependingSlides() Zwraca zwykłe slajdy, które zależą od wzorca poprzez ich układy.

Dodanie obrazu do wzorca slajdu

Gdy dodasz obraz do wzorca slajdu, pojawi się on na slajdach korzystających z układów tego wzorca. Jest to przydatne przy logotypach, znakach wodnych, dekoracyjnych pasach i innych powtarzających się elementach graficznych.

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

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto masterSlide = presentation->get_Master(0);
auto logoBytes = System::IO::File::ReadAllBytes(u"logo.png");
auto logoImage = presentation->get_Images()->AddImage(logoBytes);

masterSlide->get_Shapes()->AddPictureFrame(
    ShapeType::Rectangle,
    20.0f,
    20.0f,
    80.0f,
    80.0f,
    logoImage);

presentation->Save(u"presentation-with-logo.pptx", SaveFormat::Pptx);
presentation->Dispose();

Więcej informacji o ramkach obrazu znajdziesz w artykule Picture Frame.

Praca z elementami zastępczymi

Elementy zastępcze są zazwyczaj definiowane na slajdach układu. Wzorzec slajdu zapewnia wspólny styl i motyw, które te układy dziedziczą, a każdy układ decyduje, które elementy zastępcze są dostępne i gdzie są umieszczone.

W PowerPoint polecenia elementów zastępczych są dostępne w widoku Wzorca slajdu.

Polecenie Wstaw element zastępczy w widoku Wzorzec slajdu w PowerPoint

Aby dodać nowe elementy zastępcze w Aspose.Slides, pracuj ze slajdem układu należącym do wzorca:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto masterSlide = presentation->get_Master(0);
auto blankLayoutSlide = masterSlide->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);

if (blankLayoutSlide == nullptr)
{
    blankLayoutSlide = masterSlide->get_LayoutSlides()->Add(SlideLayoutType::Blank, u"Blank");
}

blankLayoutSlide->get_PlaceholderManager()->AddTextPlaceholder(
    60.0f,
    120.0f,
    600.0f,
    80.0f);

presentation->get_Slides()->AddEmptySlide(blankLayoutSlide);
presentation->Save(u"presentation-with-placeholder.pptx", SaveFormat::Pptx);
presentation->Dispose();

Możesz także sformatować istniejące już na wzorcu kształty zastępcze. Poniższy przykład znajduje element zastępczy tytułu i stosuje wypełnienie gradientem liniowym:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto masterSlide = presentation->get_Master(0);
System::SharedPtr<IAutoShape> titlePlaceholder;

for (auto&& shape : masterSlide->get_Shapes())
{
    auto autoShape = System::AsCast<IAutoShape>(shape);

    if (autoShape != nullptr &&
        autoShape->get_Placeholder() != nullptr &&
        autoShape->get_Placeholder()->get_Type() == PlaceholderType::Title)
    {
        titlePlaceholder = autoShape;
        break;
    }
}

if (titlePlaceholder != nullptr)
{
    auto fillFormat = titlePlaceholder->get_FillFormat();
    fillFormat->set_FillType(FillType::Gradient);

    auto gradientFormat = fillFormat->get_GradientFormat();
    gradientFormat->set_GradientShape(GradientShape::Linear);

    auto gradientStops = gradientFormat->get_GradientStops();
    auto redGradientColor = System::Drawing::Color::FromArgb(255, 0, 0);
    auto purpleGradientColor = System::Drawing::Color::FromArgb(128, 0, 128);

    gradientStops->Add(0.0f, redGradientColor);
    gradientStops->Add(255.0f, purpleGradientColor);
}

presentation->Save(u"presentation-title-style.pptx", SaveFormat::Pptx);
presentation->Dispose();

Sformatowany element zastępczy tytułu dziedziczony przez zwykłe slajdy

Więcej opcji formatowania elementów zastępczych i tekstu znajdziesz w artykułach Set Prompt Text in Placeholder oraz Text Formatting.

Zmiana tła wzorca slajdu

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

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto masterSlide = presentation->get_Master(0);
auto masterBackgroundColor = System::Drawing::Color::get_ForestGreen();

masterSlide->get_Background()->set_Type(BackgroundType::OwnBackground);
masterSlide->get_Background()->get_FillFormat()->set_FillType(FillType::Solid);
masterSlide->get_Background()->get_FillFormat()->get_SolidFillColor()->set_Color(masterBackgroundColor);

presentation->Save(u"presentation-master-background.pptx", SaveFormat::Pptx);
presentation->Dispose();

Powiązane tematy: Presentation Background oraz Presentation Theme.

Klonowanie wzorca slajdu do innej prezentacji

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

auto sourcePresentation = System::MakeObject<Presentation>(u"source.pptx");
auto destinationPresentation = System::MakeObject<Presentation>(u"destination.pptx");

auto sourceMasterSlide = sourcePresentation->get_Master(0);
auto clonedMasterSlide = destinationPresentation->get_Masters()->AddClone(sourceMasterSlide);

destinationPresentation->Save(u"destination-with-master.pptx", SaveFormat::Pptx);
destinationPresentation->Dispose();
sourcePresentation->Dispose();

Jeśli potrzebujesz sklonować zwykłe slajdy wraz z ich wzorcem, zobacz Clone Slides.

Dodawanie wielu wzorców slajdów

Prezentacja może zawierać wiele wzorców slajdów. Jest to przydatne, gdy różne sekcje wymagają odmiennych identyfikacji wizualnych, struktury stron lub ustawień motywu.

Polecenia PowerPoint służące do wstawiania i zarządzania wzorcami slajdów

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

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto defaultMasterSlide = presentation->get_Master(0);
auto sectionMasterSlide = presentation->get_Masters()->AddClone(defaultMasterSlide);
auto sectionMasterBackgroundColor = System::Drawing::Color::get_LightSteelBlue();

sectionMasterSlide->get_Background()->set_Type(BackgroundType::OwnBackground);
sectionMasterSlide->get_Background()->get_FillFormat()->set_FillType(FillType::Solid);
sectionMasterSlide->get_Background()->get_FillFormat()->get_SolidFillColor()->set_Color(sectionMasterBackgroundColor);

auto sourceBlankLayout = defaultMasterSlide->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);

if (sourceBlankLayout == nullptr)
{
    sourceBlankLayout = defaultMasterSlide->get_LayoutSlide(0);
}

auto sectionBlankLayout = sectionMasterSlide->get_LayoutSlides()->AddClone(sourceBlankLayout);

presentation->get_Slides()->AddEmptySlide(sectionBlankLayout);
presentation->Save(u"presentation-with-multiple-masters.pptx", SaveFormat::Pptx);
presentation->Dispose();

Porównywanie wzorców slajdów

Wzorce slajdów można porównać metodą Equals odziedziczoną po IBaseSlide. Porównanie sprawdza strukturę oraz statyczną zawartość, taką jak kształty, tekst, formatowanie, animacje i inne ustawienia slajdu. Nie porównuje on unikalnych identyfikatorów, takich jak ID slajdu, ani dynamicznych wartości elementów zastępczych, np. bieżącej daty.

auto firstPresentation = System::MakeObject<Presentation>(u"first.pptx");
auto secondPresentation = System::MakeObject<Presentation>(u"second.pptx");
auto firstPresentationMasterCount = firstPresentation->get_Masters()->get_Count();
auto secondPresentationMasterCount = secondPresentation->get_Masters()->get_Count();

for (int32_t firstMasterIndex = 0;
     firstMasterIndex < firstPresentationMasterCount;
     firstMasterIndex++)
{
    for (int32_t secondMasterIndex = 0;
         secondMasterIndex < secondPresentationMasterCount;
         secondMasterIndex++)
    {
        auto firstMasterSlide = firstPresentation->get_Master(firstMasterIndex);
        auto secondMasterSlide = secondPresentation->get_Master(secondMasterIndex);
        auto areMasterSlidesEqual = firstMasterSlide->Equals(secondMasterSlide);

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

secondPresentation->Dispose();
firstPresentation->Dispose();

Więcej informacji znajdziesz w artykule Compare Presentation Slides.

Ustawienie widoku Wzorca slajdu jako widoku domyślnego

Użyj metody set_LastView na ViewProperties, aby określić widok, który PowerPoint otwiera jako pierwszy. Poniższy przykład otwiera prezentację w widoku Wzorca slajdu:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

presentation->get_ViewProperties()->set_LastView(ViewType::SlideMasterView);
presentation->Save(u"presentation-master-view.pptx", SaveFormat::Pptx);
presentation->Dispose();

Więcej ustawień widoku znajdziesz w artykule Save Presentation.

Usuwanie nieużywanych wzorców slajdów

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

Użyj MasterSlideCollection::RemoveUnused, aby usunąć nieużywane wzorce ze zbioru get_Masters():

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

presentation->get_Masters()->RemoveUnused(true);
presentation->Save(u"presentation-clean.pptx", SaveFormat::Pptx);
presentation->Dispose();

Możesz także skorzystać z metody niskokodowej Compress::RemoveUnusedMasterSlides:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

LowCode::Compress::RemoveUnusedMasterSlides(presentation);
presentation->Save(u"presentation-clean.pptx", SaveFormat::Pptx);
presentation->Dispose();

FAQ

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

Wzorzec slajdu definiuje wspólne ustawienia projektowe, takie jak motyw, tło, wspólne kształty i style tekstu. Slajd układu należy do wzorca i określa konkretne rozmieszczenie elementów zastępczych. Zwykły slajd używa slajdu układu, więc dziedziczy zarówno z układu, jak i z wzorca.

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

Tak. Prezentacja może zawierać wiele wzorców slajdów. Używaj wielu wzorców, gdy różne sekcje wymagają odmiennych systemów wizualnych lub identyfikacji marki.

Czy powinienem dodawać elementy zastępcze do wzorca slajdu czy do slajdu układu?

W większości przypadków elementy zastępcze dodaje się do slajdów układu. Na wzorcu umieszczaj wspólne elementy graficzne i formatowanie, a na układach – miejsca przeznaczone na treść, które będą używane przez zwykłe slajdy.

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

Nie. Wzorzec, od którego zależą slajdy, nie może być bezpiecznie usunięty. Najpierw przenieś te slajdy do układów pod innym wzorcem lub skorzystaj z metody czyszczenia nieużywanych wzorców, która usuwa tylko te, które nie są używane.