Dostęp do slajdów prezentacji w C++

Przegląd

Ten artykuł wyjaśnia, jak uzyskać dostęp i zarządzać slajdami w prezentacji przy użyciu Aspose.Slides. Pokazuje, jak pobrać slajdy według ich zerowego indeksu z kolekcji slajdów oraz jak uzyskać dostęp do slajdu po jego unikalnym identyfikatorze za pomocą metody GetSlideById.

Dowiesz się także, jak zmienić pozycję slajdu, używając metody set_SlideNumber, oraz jak określić początkowy numer slajdu w prezentacji przy pomocy metody set_FirstSlideNumber. Przykłady demonstrują wczytywanie prezentacji, uzyskiwanie referencji do slajdów, aktualizowanie kolejności lub numeracji slajdów oraz zapisywanie zmodyfikowanej prezentacji.

Dostęp do slajdu według indeksu

Wszystkie slajdy w prezentacji są ułożone numerycznie w oparciu o pozycję slajdu, zaczynając od 0. Pierwszy slajd jest dostępny pod indeksem 0; drugi slajd pod indeksem 1; itp.

Klasa Presentation, reprezentująca plik prezentacji, udostępnia wszystkie slajdy jako kolekcję ISlideCollection (kolekcję obiektów ISlide). Ten kod w C++ pokazuje, jak uzyskać dostęp do slajdu za pośrednictwem jego indeksu:

	// Ścieżka do katalogu z dokumentami.
	const String templatePath = u"../templates/AddSlides.pptx";

	// Tworzy instancję klasy Presentation
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Pobiera referencję do slajdu za pomocą jego indeksu
	SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

Dostęp do slajdu według identyfikatora

Każdy slajd w prezentacji ma przypisany unikalny identyfikator. Możesz użyć metody GetSlideById() (udostępnionej przez klasę Presentation), aby odwołać się do tego identyfikatora. Ten kod w C++ pokazuje, jak podać prawidłowy identyfikator slajdu i uzyskać dostęp do tego slajdu za pomocą metody GetSlideById():

	// Ścieżka do katalogu z dokumentami.
	const String templatePath = u"../templates/AddSlides.pptx";

	// Tworzy instancję klasy Presentation
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Pobiera identyfikator slajdu
	int id = pres->get_Slides()->idx_get(0)->get_SlideId();

	// Uzyskuje dostęp do slajdu za pośrednictwem jego identyfikatora
	SharedPtr<IBaseSlide> slide = pres->GetSlideById(id);

Zmienianie pozycji slajdu

Aspose.Slides umożliwia zmianę pozycji slajdu. Na przykład możesz określić, że pierwszy slajd ma stać się drugim slajdem.

  1. Utwórz instancję klasy Presentation.
  2. Pobierz referencję do slajdu (którego pozycję chcesz zmienić) za pomocą jego indeksu
  3. Ustaw nową pozycję slajdu przy użyciu właściwości set_SlideNumber().
  4. Zapisz zmodyfikowaną prezentację.

Ten kod w C++ demonstruje operację, w której slajd na pozycji 1 zostaje przeniesiony na pozycję 2:

	// Ścieżka do katalogu z dokumentami.
	const String templatePath = u"../templates/AddSlides.pptx";
	const String outPath = u"../out/ChangeSlidePosition.pptx";

	// Tworzy instancję klasy Presentation
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Pobiera slajd, którego pozycja zostanie zmieniona
	SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

	// Ustawia nową pozycję slajdu
	slide->set_SlideNumber(2);

	// Zapisuje zmodyfikowaną prezentację
	pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Pierwszy slajd stał się drugim; drugi slajd stał się pierwszym. Gdy zmieniasz pozycję slajdu, pozostałe slajdy są automatycznie dostosowywane.

Ustaw numer slajdu

Korzystając z właściwości set_FirstSlideNumber() (udostępnionej przez klasę Presentation), możesz określić nowy numer pierwszego slajdu w prezentacji. Ta operacja powoduje przeliczenie pozostałych numerów slajdów.

  1. Utwórz instancję klasy Presentation.
  2. Pobierz numer slajdu.
  3. Ustaw numer slajdu.
  4. Zapisz zmodyfikowaną prezentację.

Ten kod w C++ demonstruje operację, w której numer pierwszego slajdu jest ustawiony na 10:

	// Ścieżka do katalogu z dokumentami.
	const String outPath = u"../out/SetSlideNumber_out.pptx";
	const String templatePath = u"../templates/AccessSlides.pptx";

	//Tworzy instancję klasy Presentation
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Pobiera numer slajdu
	int firstSlideNumber = pres->get_FirstSlideNumber();

	// Ustawia numer slajdu
	pres->set_FirstSlideNumber(2);
	
	// Zapisuje zmodyfikowaną prezentację
	pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Jeśli chcesz pominąć pierwszy slajd, możesz rozpocząć numerację od drugiego slajdu (i ukryć numerację pierwszego slajdu) w ten sposób:

auto presentation = System::MakeObject<Presentation>();

auto layoutSlide = presentation->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);

auto slides = presentation->get_Slides();
slides->AddEmptySlide(layoutSlide);
slides->AddEmptySlide(layoutSlide);
slides->AddEmptySlide(layoutSlide);

// Sets the number for the first presentation slide
presentation->set_FirstSlideNumber(0);

// Shows slide numbers for all slides
presentation->get_HeaderFooterManager()->SetAllSlideNumbersVisibility(true);

// Hides the slide number for the first slide
slides->idx_get(0)->get_HeaderFooterManager()->SetSlideNumberVisibility(false);

// Saves the modified presentation
presentation->Save(u"output.pptx", SaveFormat::Pptx);

FAQ

Czy numer slajdu widziany przez użytkownika odpowiada zerowemu indeksowi kolekcji?

Numer wyświetlany na slajdzie może zaczynać się od dowolnej wartości (np. 10) i nie musi odpowiadać indeksowi; zależność jest kontrolowana przez ustawienie pierwszego numeru slajdu w prezentacji.

Czy ukryte slajdy wpływają na indeksowanie?

Tak. Ukryty slajd pozostaje w kolekcji i jest liczony przy indeksowaniu; „ukryty” odnosi się do wyświetlania, a nie do jego pozycji w kolekcji.

Czy indeks slajdu zmienia się, gdy dodawane lub usuwane są inne slajdy?

Tak. Indeksy zawsze odzwierciedlają bieżącą kolejność slajdów i są przeliczane po operacjach wstawiania, usuwania i przenoszenia.