Отображение презентаций с резервными шрифтами в .NET

Contents
[ ]

В следующем примере приведены следующие шаги:

  1. Мы создаём коллекцию правил резервных шрифтов.
  2. Remove() резервное правило шрифта и AddFallBackFonts() к другому правилу.
  3. Устанавливаем коллекцию правил в свойство FontsManager.FontFallBackRulesCollection.
  4. С помощью метода Presentation.Save() мы можем сохранить презентацию в том же формате или в другом. После того как коллекция правил резервных шрифтов установлена в FontsManager, эти правила применяются при любых операциях с презентацией: сохранение, рендеринг, конвертация и т.д.
// Create new instance of a rules collection
IFontFallBackRulesCollection rulesList = new FontFallBackRulesCollection();

// create a number of rules
rulesList.Add(new FontFallBackRule(0x400, 0x4FF, "Times New Roman"));
//rulesList.Add(new FontFallBackRule(...));

foreach (IFontFallBackRule fallBackRule in rulesList)
{
	//Trying to remove FallBack font "Tahoma" from loaded rules
	fallBackRule.Remove("Tahoma");

	//And to update of rules for specified range
	if ((fallBackRule.RangeEndIndex >= 0x4000) && (fallBackRule.RangeStartIndex < 0x5000))
		fallBackRule.AddFallBackFonts("Verdana");
}

//Also we can remove any existing rules from list
if (rulesList.Count > 0)
	rulesList.Remove(rulesList[0]);

using (Presentation pres = new Presentation("input.pptx"))
{
    //Assigning a prepared rules list for using
    pres.FontsManager.FontFallBackRulesCollection = rulesList;

    // Rendering of thumbnail with using of initialized rules collection and saving to PNG
    using (IImage image = pres.Slides[0].GetImage(1f, 1f))
    {
        image.Save("Slide_0.png", ImageFormat.Png);
    }
}