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.

  1. Vytvořte instanci třídy Presentation.
  2. Získejte odkaz na snímek (kterého pozici chcete změnit) pomocí jeho indexu
  3. Nastavte novou pozici snímku pomocí vlastnosti set_SlideNumber().
  4. 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ů.

  1. Vytvořte instanci třídy Presentation.
  2. Získejte číslo snímku.
  3. Nastavte číslo snímku.
  4. 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.