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.
- Utwórz instancję klasy Presentation.
- Pobierz referencję do slajdu (którego pozycję chcesz zmienić) za pomocą jego indeksu
- Ustaw nową pozycję slajdu przy użyciu właściwości set_SlideNumber().
- 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.
- Utwórz instancję klasy Presentation.
- Pobierz numer slajdu.
- Ustaw numer slajdu.
- 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.