C++에서 슬라이드 레이아웃 적용 또는 변경
소개
슬라이드 레이아웃은 슬라이드의 콘텐츠에 대한 자리표시자 상자와 서식 배치를 정의합니다. 어떤 자리표시자를 사용할 수 있는지와 그 위치를 제어합니다. 슬라이드 레이아웃을 사용하면 간단한 것이든 복잡한 것이든 프레젠테이션을 빠르고 일관되게 디자인할 수 있습니다. PowerPoint에서 가장 일반적인 슬라이드 레이아웃 중 일부는 다음과 같습니다:
제목 슬라이드 레이아웃 – 제목과 부제목을 위한 두 개의 텍스트 자리표시자를 포함합니다.
제목 및 내용 레이아웃 – 상단에 작은 제목 자리표시자가 있고, 그 아래에 텍스트, 글머리표, 차트, 이미지 등 주요 콘텐츠를 위한 더 큰 자리표시자가 있습니다.
빈 레이아웃 – 자리표시자가 전혀 없어, 슬라이드를 처음부터 자유롭게 디자인할 수 있습니다.
슬라이드 레이아웃은 슬라이드 마스터의 일부이며, 슬라이드 마스터는 프레젠테이션의 레이아웃 스타일을 정의하는 최상위 슬라이드입니다. 레이아웃 슬라이드는 슬라이드 마스터를 통해 유형, 이름 또는 고유 ID로 접근하고 수정할 수 있습니다. 또는 프레젠테이션 내에서 특정 레이아웃 슬라이드를 직접 편집할 수 있습니다.
Aspose.Slides for Android에서 슬라이드 레이아웃을 작업하려면 다음을 사용할 수 있습니다:
- Presentation 클래스 아래의 get_LayoutSlides 및 get_Masters와 같은 메서드
- ILayoutSlide, IMasterLayoutSlideCollection, ILayoutPlaceholderManager, 및 ILayoutSlideHeaderFooterManager와 같은 형식
Info
마스터 슬라이드 작업에 대해 자세히 알아보려면 Slide Master 문서를 확인하세요.프레젠테이션에 슬라이드 레이아웃 추가
슬라이드의 모양과 구조를 사용자 정의하려면 프레젠테이션에 새로운 레이아웃 슬라이드를 추가해야 할 수 있습니다. Aspose.Slides for Android를 사용하면 특정 레이아웃이 이미 존재하는지 확인하고, 필요하면 새 레이아웃을 추가한 뒤 해당 레이아웃을 기반으로 슬라이드를 삽입할 수 있습니다.
- Presentation 클래스의 인스턴스를 생성합니다.
- IMasterLayoutSlideCollection에 접근합니다.
- 원하는 레이아웃 슬라이드가 컬렉션에 이미 존재하는지 확인합니다. 존재하지 않으면 필요한 레이아웃 슬라이드를 추가합니다.
- 새 레이아웃 슬라이드를 기반으로 빈 슬라이드를 추가합니다.
- 프레젠테이션을 저장합니다.
다음 C++ 코드는 PowerPoint 프레젠테이션에 슬라이드 레이아웃을 추가하는 방법을 보여줍니다:
// PowerPoint 파일을 나타내는 Presentation 클래스를 인스턴스화합니다.
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
// Go through the layout slide types to select a layout slide.
auto layoutSlides = presentation->get_Master(0)->get_LayoutSlides();
SharedPtr<ILayoutSlide> layoutSlide;
if (layoutSlides->GetByType(SlideLayoutType::TitleAndObject) != nullptr)
{
layoutSlide = layoutSlides->GetByType(SlideLayoutType::TitleAndObject);
}
else if (layoutSlides->GetByType(SlideLayoutType::Title) != nullptr)
{
layoutSlide = layoutSlides->GetByType(SlideLayoutType::Title);
}
if (layoutSlide == nullptr)
{
// 프레젠테이션에 모든 레이아웃 유형이 포함되지 않은 경우입니다.
// 프레젠테이션 파일에는 Blank 및 Custom 레이아웃 유형만 포함되어 있습니다.
// 그러나 사용자 정의 유형의 레이아웃 슬라이드에는 인식 가능한 이름이 있을 수 있습니다,
// 예를 들어 "Title", "Title and Content" 등과 같이 레이아웃 슬라이드 선택에 사용할 수 있습니다.
// 또한 자리표시자 도형 유형 집합에 의존할 수 있습니다.
// 예를 들어, Title 슬라이드에는 Title 자리표시자 유형만 있어야 하며, 이와 같이 적용됩니다.
for (int i = 0; i < layoutSlides->get_Count(); i++)
{
auto titleAndObjectLayoutSlide = layoutSlides->idx_get(i);
if (titleAndObjectLayoutSlide->get_Name().Equals(u"Title and Object"))
{
layoutSlide = titleAndObjectLayoutSlide;
break;
}
}
if (layoutSlide == nullptr)
{
for (int i = 0; i < layoutSlides->get_Count(); i++)
{
auto titleLayoutSlide = layoutSlides->idx_get(i);
if (titleLayoutSlide->get_Name() == u"Title")
{
layoutSlide = titleLayoutSlide;
break;
}
}
if (layoutSlide == nullptr)
{
layoutSlide = layoutSlides->GetByType(SlideLayoutType::Blank);
if (layoutSlide == nullptr)
{
layoutSlide = layoutSlides->Add(SlideLayoutType::TitleAndObject, u"Title and Object");
}
}
}
}
// 추가된 레이아웃 슬라이드를 사용하여 빈 슬라이드를 추가합니다.
presentation->get_Slides()->InsertEmptySlide(0, layoutSlide);
// 프레젠테이션을 디스크에 저장합니다.
presentation->Save(u"Output.pptx", SaveFormat::Pptx);
presentation->Dispose();
사용되지 않는 레이아웃 슬라이드 제거
Aspose.Slides는 Compress 클래스의 RemoveUnusedLayoutSlides 메서드를 제공하여 원하지 않거나 사용되지 않은 레이아웃 슬라이드를 삭제할 수 있습니다.
다음 C++ 코드는 PowerPoint 프레젠테이션에서 레이아웃 슬라이드를 제거하는 방법을 보여줍니다:
auto presentation = MakeObject<Presentation>(u"Presentation.pptx");
Compress::RemoveUnusedLayoutSlides(presentation);
presentation->Save(u"Output.pptx", SaveFormat::Pptx);
presentation->Dispose();
슬라이드 레이아웃에 자리표시자 추가
Aspose.Slides는 레이아웃 슬라이드에 새로운 자리표시자를 추가할 수 있는 ILayoutSlide.get_PlaceholderManager 메서드를 제공합니다.
이 매니저는 다음 자리표시자 유형에 대한 메서드를 포함합니다:
| PowerPoint 자리표시자 | ILayoutPlaceholderManager Method |
|---|---|
![]() |
AddContentPlaceholder(float x, float y, float width, float height) |
![]() |
AddVerticalContentPlaceholder(float x, float y, float width, float height) |
![]() |
AddTextPlaceholder(float x, float y, float width, float height) |
![]() |
AddVerticalTextPlaceholder(float x, float y, float width, float height) |
![]() |
AddPicturePlaceholder(float x, float y, float width, float height) |
![]() |
AddChartPlaceholder(float x, float y, float width, float height) |
![]() |
AddTablePlaceholder(float x, float y, float width, float height) |
![]() |
AddSmartArtPlaceholder(float x, float y, float width, float height) |
![]() |
AddMediaPlaceholder(float x, float y, float width, float height) |
![]() |
AddOnlineImagePlaceholder(float x, float y, float width, float height) |
다음 C++ 코드는 빈 레이아웃 슬라이드에 새로운 자리표시자 도형을 추가하는 방법을 보여줍니다:
auto presentation = MakeObject<Presentation>();
// Blank 레이아웃 슬라이드를 가져옵니다.
auto layout = presentation->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);
// 레이아웃 슬라이드의 자리표시자 관리자를 가져옵니다.
auto placeholderManager = layout->get_PlaceholderManager();
// Blank 레이아웃 슬라이드에 다양한 자리표시자를 추가합니다.
placeholderManager->AddContentPlaceholder(20, 20, 310, 270);
placeholderManager->AddVerticalTextPlaceholder(350, 20, 350, 270);
placeholderManager->AddChartPlaceholder(20, 310, 310, 180);
placeholderManager->AddTablePlaceholder(350, 310, 350, 180);
// Blank 레이아웃을 사용하여 새 슬라이드를 추가합니다.
auto newSlide = presentation->get_Slides()->AddEmptySlide(layout);
presentation->Save(u"Placeholders.pptx", SaveFormat::Pptx);
presentation->Dispose();
결과:

레이아웃 슬라이드의 바닥글 표시 여부 설정
PowerPoint 프레젠테이션에서 날짜, 슬라이드 번호, 사용자 지정 텍스트와 같은 바닥글 요소는 슬라이드 레이아웃에 따라 표시되거나 숨겨질 수 있습니다. Aspose.Slides for Android를 사용하면 이러한 바닥글 자리표시자의 표시 여부를 제어할 수 있습니다. 특정 레이아웃에서는 바닥글 정보를 표시하고, 다른 레이아웃은 깔끔하고 최소한으로 유지하고 싶을 때 유용합니다.
- Presentation 클래스의 인스턴스를 생성합니다.
- 인덱스로 레이아웃 슬라이드 참조를 가져옵니다.
- 슬라이드 바닥글 자리표시자를 표시하도록 설정합니다.
- 슬라이드 번호 자리표시자를 표시하도록 설정합니다.
- 날짜‑시간 자리표시자를 표시하도록 설정합니다.
- 프레젠테이션을 저장합니다.
다음 C++ 코드는 슬라이드 바닥글의 표시 여부를 설정하고 관련 작업을 수행하는 방법을 보여줍니다:
auto presentation = MakeObject<Presentation>(u"Presentation.ppt");
auto headerFooterManager = presentation->get_LayoutSlides()->idx_get(0)->get_HeaderFooterManager();
if (!headerFooterManager->get_IsFooterVisible())
{
headerFooterManager->SetFooterVisibility(true);
}
if (!headerFooterManager->get_IsSlideNumberVisible())
{
headerFooterManager->SetSlideNumberVisibility(true);
}
if (!headerFooterManager->get_IsDateTimeVisible())
{
headerFooterManager->SetDateTimeVisibility(true);
}
headerFooterManager->SetFooterText(u"Footer text");
headerFooterManager->SetDateTimeText(u"Date and time text");
presentation->Save(u"Presentation.ppt", SaveFormat::Pptx);
presentation->Dispose();
슬라이드의 자식 바닥글 표시 여부 설정
PowerPoint 프레젠테이션에서 날짜, 슬라이드 번호, 사용자 지정 텍스트와 같은 바닥글 요소는 모든 레이아웃 슬라이드에 일관성을 보장하기 위해 마스터 슬라이드 수준에서 제어될 수 있습니다. Aspose.Slides for Android는 마스터 슬라이드에서 이러한 바닥글 자리표시자의 표시 여부와 내용을 설정하고 이러한 설정을 모든 자식 레이아웃 슬라이드에 전파하도록 지원합니다. 이 접근 방식은 프레젠테이션 전체에 일관된 바닥글 정보를 보장합니다.
- Presentation 클래스의 인스턴스를 생성합니다.
- 인덱스로 마스터 슬라이드에 대한 참조를 가져옵니다.
- 마스터와 모든 자식 바닥글 자리표시자를 표시하도록 설정합니다.
- 마스터와 모든 자식 슬라이드 번호 자리표시자를 표시하도록 설정합니다.
- 마스터와 모든 자식 날짜‑시간 자리표시자를 표시하도록 설정합니다.
- 프레젠테이션을 저장합니다.
다음 C++ 코드는 이 작업을 보여줍니다:
auto presentation = MakeObject<Presentation>();
auto headerFooterManager = presentation->get_Master(0)->get_HeaderFooterManager();
headerFooterManager->SetFooterAndChildFootersVisibility(true);
headerFooterManager->SetSlideNumberAndChildSlideNumbersVisibility(true);
headerFooterManager->SetDateTimeAndChildDateTimesVisibility(true);
headerFooterManager->SetFooterAndChildFootersText(u"Footer text");
headerFooterManager->SetDateTimeAndChildDateTimesText(u"Date and time text");
presentation->Save(u"Output.pptx", SaveFormat::Pptx);
presentation->Dispose();
FAQ
마스터 슬라이드와 레이아웃 슬라이드의 차이점은 무엇인가요?
마스터 슬라이드는 전체 테마와 기본 서식을 정의하고, 레이아웃 슬라이드는 다양한 콘텐츠 유형에 대한 특정 자리표시자 배치를 정의합니다.
한 프레젠테이션의 레이아웃 슬라이드를 다른 프레젠테이션으로 복사할 수 있나요?
예, 한 프레젠테이션의 레이아웃 슬라이드 컬렉션에서 get_LayoutSlides 메서드로 접근 가능한 레이아웃 슬라이드를 복제하고, AddClone 메서드를 사용하여 다른 프레젠테이션에 삽입할 수 있습니다.
슬라이드에서 아직 사용 중인 레이아웃 슬라이드를 삭제하면 어떻게 되나요?
슬라이드에서 아직 사용 중인 레이아웃 슬라이드를 삭제하려고 하면 Aspose.Slides는 PptxEditException을 발생시킵니다. 이를 방지하려면 사용되지 않은 레이아웃 슬라이드만 안전하게 제거하는 RemoveUnusedLayoutSlides를 사용하십시오.









