Renderowanie prezentacji z czcionkami zapasowymi w С++

Przegląd

Aspose.Slides umożliwia renderowanie prezentacji przy użyciu zasad czcionek zapasowych. Ten artykuł pokazuje, jak utworzyć kolekcję zasad czcionek zapasowych, modyfikować jej zasady poprzez usuwanie lub dodawanie czcionek zapasowych oraz przypisać kolekcję za pomocą metody FontsManager::set_FontFallBackRulesCollection.

Po przypisaniu kolekcji zasad czcionek zapasowych do FontsManager prezentacji, zasady są stosowane podczas operacji, takich jak zapisywanie, renderowanie i konwertowanie prezentacji. Przykład demonstruje, jak używać skonfigurowanych zasad przy renderowaniu miniatury slajdu i zapisywaniu jej jako obrazu PNG.

Renderowanie slajdu przy użyciu zasad czcionek zapasowych

Poniższy przykład zawiera następujące kroki:

  1. Tworzymy kolekcję zasad czcionek zapasowych.
  2. Remove() zasadę czcionki zapasowej i AddFallBackFonts() do innej zasady.
  3. Przekaż kolekcję zasad do metody FontsManager::set_FontFallBackRulesCollection().
  4. Za pomocą metody Presentation::Save() możemy zapisać prezentację w tym samym formacie lub w innym. Po ustawieniu kolekcji zasad czcionek zapasowych w FontsManager, zasady te są stosowane podczas wszystkich operacji na prezentacji: zapisywanie, renderowanie, konwertowanie itp.
// Utwórz nową instancję kolekcji reguł
auto rulesList = MakeObject<FontFallBackRulesCollection>();

// Utwórz kilka reguł
rulesList->Add(MakeObject<FontFallBackRule>(static_cast<uint32_t>(0x400), static_cast<uint32_t>(0x4FF), u"Times New Roman"));
//rulesList.Add(new FontFallBackRule(...));

for (const auto& fallBackRule : rulesList)
{
	// Próba usunięcia czcionki zapasowej "Tahoma" z załadowanych reguł
	fallBackRule->Remove(u"Tahoma");

	// I aktualizacji reguł dla określonego zakresu
	if ((fallBackRule->get_RangeEndIndex() >= static_cast<uint32_t>(0x4000)) && 
		(fallBackRule->get_RangeStartIndex() < static_cast<uint32_t>(0x5000)))
	{
		fallBackRule->AddFallBackFonts(u"Verdana");
	}
}

// Możemy również usunąć istniejące reguły z listy
if (rulesList->get_Count() > 0)
{
	rulesList->Remove(rulesList->idx_get(0));
}

auto pres = System::MakeObject<Presentation>(u"input.pptx");
// Przypisywanie przygotowanej listy reguł do użycia
pres->get_FontsManager()->set_FontFallBackRulesCollection(rulesList);

// Renderowanie miniatury przy użyciu zainicjowanej kolekcji reguł i zapisywanie jako PNG
auto image = pres->get_Slide(0)->GetImage(1.f, 1.f);
image->Save(u"Slide_0.png", ImageFormat::Png);
image->Dispose();

pres->Dispose();