Přístup k snímkům prezentace v C++
Přehled
Tento článek vysvětluje, jak pomocí Aspose.Slides přistupovat k snímkům v prezentaci a spravovat je. Ukazuje, jak získat snímky podle jejich nulového indexu ze sbírky snímků a jak přistoupit k snímku pomocí jeho jedinečného ID pomocí metody GetSlideById.
Dozvíte se také, jak změnit pozici snímku pomocí metody set_SlideNumber a jak definovat počáteční číslo snímku pro prezentaci pomocí metody set_FirstSlideNumber. Příklady ukazují načtení prezentace, získání odkazů na snímky, aktualizaci pořadí nebo číslování snímků a uložení upravené prezentace.
Přístup k snímku podle indexu
Všechny snímky v prezentaci jsou uspořádány číselně podle pozice snímku počínaje 0. První snímek je přístupný pomocí indexu 0; druhý snímek je přístupný pomocí indexu 1; atd.
Třída Presentation, která představuje soubor prezentace, zpřístupňuje všechny snímky jako kolekci ISlideCollection (kolekci objektů ISlide). Tento kód v C++ ukazuje, jak přistoupit k snímku podle jeho indexu:
// Cesta k adresáři dokumentů.
const String templatePath = u"../templates/AddSlides.pptx";
// Vytvoří instanci třídy Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Získá odkaz na snímek pomocí jeho indexu
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
Přístup k snímku podle ID
Každý snímek v prezentaci má přiřazené jedinečné ID. K cílení na toto ID můžete použít metodu GetSlideById() (zpřístupněnou třídou Presentation). Tento kód v C++ ukazuje, jak zadat platné ID snímku a přistoupit k tomuto snímku přes metodu GetSlideById():
// Cesta k adresáři dokumentů.
const String templatePath = u"../templates/AddSlides.pptx";
// Vytváří instanci třídy Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Získá ID snímku
int id = pres->get_Slides()->idx_get(0)->get_SlideId();
// Přistupuje k snímku pomocí jeho ID
SharedPtr<IBaseSlide> slide = pres->GetSlideById(id);
Změna pozice snímku
Aspose.Slides vám umožňuje změnit pozici snímku. Například můžete určit, že první snímek se má stát druhým snímkem.
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na snímek (kterého pozici chcete změnit) pomocí jeho indexu
- Nastavte novou pozici snímku pomocí vlastnosti set_SlideNumber().
- Uložte upravenou prezentaci.
Tento kód v C++ demonstruje operaci, při které je snímek na pozici 1 přesunut na pozici 2:
// Cesta k adresáři dokumentů.
const String templatePath = u"../templates/AddSlides.pptx";
const String outPath = u"../out/ChangeSlidePosition.pptx";
// Vytváří instanci třídy Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Získá snímek, jehož pozice bude změněna
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Nastaví novou pozici snímku
slide->set_SlideNumber(2);
// Uloží upravenou prezentaci
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
První snímek se stal druhým; druhý snímek se stal prvním. Když změníte pozici snímku, ostatní snímky jsou automaticky upraveny.
Nastavení čísla snímku
Pomocí vlastnosti set_FirstSlideNumber() (zpřístupněné třídou Presentation) můžete určit nové číslo pro první snímek v prezentaci. Tato operace způsobí přepočet čísel ostatních snímků.
- Vytvořte instanci třídy Presentation.
- Získejte číslo snímku.
- Nastavte číslo snímku.
- Uložte upravenou prezentaci.
Tento kód v C++ demonstruje operaci, při které je číslo prvního snímku nastaveno na 10:
// Cesta k adresáři dokumentů.
const String outPath = u"../out/SetSlideNumber_out.pptx";
const String templatePath = u"../templates/AccessSlides.pptx";
//Instanci třídy Presentation vytvoří
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Získá číslo snímku
int firstSlideNumber = pres->get_FirstSlideNumber();
// Nastaví číslo snímku
pres->set_FirstSlideNumber(2);
// Uloží upravenou prezentaci
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Pokud chcete první snímek přeskočit, můžete zahájit číslování od druhého snímku (a skrýt číslování pro první snímek) tímto způsobem:
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);
// Nastaví číslo pro první snímek prezentace
presentation->set_FirstSlideNumber(0);
// Zobrazí čísla snímků pro všechny snímky
presentation->get_HeaderFooterManager()->SetAllSlideNumbersVisibility(true);
// Skryje číslo snímku pro první snímek
slides->idx_get(0)->get_HeaderFooterManager()->SetSlideNumberVisibility(false);
// Uloží upravenou prezentaci
presentation->Save(u"output.pptx", SaveFormat::Pptx);
Často kladené dotazy
Odpovídá číslo snímku, které uživatel vidí, nulovému indexu ve sbírce?
Číslo zobrazené na snímku může začínat libovolnou hodnotou (např. 10) a nemusí odpovídat indexu; vztah řídí nastavení prvního čísla snímku v prezentaci.
Ovlivňují skryté snímky indexování?
Ano. Skrytý snímek zůstává ve sbírce a je započítán do indexování; „skrytý“ se vztahuje na zobrazování, nikoli na jeho pozici ve sbírce.
Mění se index snímku, když jsou přidány nebo odebrány jiné snímky?
Ano. Indexy vždy odrážejí aktuální pořadí snímků a jsou přepočítány při vložení, smazání nebo přesunu.