嵌入字体 - PowerPoint C# API

PowerPoint中的嵌入字体 在您希望在任何系统或设备上正确打开演示文稿时非常有用。如果您使用了第三方或非标准字体,因为您在工作中进行了创造性尝试,那么您就更加需要嵌入您的字体。否则(没有嵌入字体),幻灯片上的文本或数字、布局、样式等可能会改变或变成令人困惑的矩形。

FontsManager 类、FontData 类、Compress 类及其接口包含了您处理 PowerPoint 演示文稿中的嵌入字体所需的大部分属性和方法。

获取或删除演示文稿中的嵌入字体

Aspose.Slides 提供了 GetEmbeddedFonts 方法(由 FontsManager 类公开),允许您获取(或查找)嵌入在演示文稿中的字体。要删除字体,可以使用 RemoveEmbeddedFont 方法(由同一类公开)。

以下 C# 代码演示了如何从演示文稿中获取和删除嵌入字体:

using (Presentation presentation = new Presentation("EmbeddedFonts.pptx"))
{
    ISlide slide = presentation.Slides[0];

    // 渲染一个包含使用嵌入 "FunSized" 字体的文本框的幻灯片
    using (IImage image = slide.GetImage(new Size(960, 720)))
    {
        image.Save("picture1_out.png", ImageFormat.Png);
    }

    IFontsManager fontsManager = presentation.FontsManager;

    IFontData[] embeddedFonts = fontsManager.GetEmbeddedFonts();

    // 查找 "Calibri" 字体
    IFontData funSizedEmbeddedFont = Array.Find(embeddedFonts, delegate (IFontData data)
    {
        return data.FontName == "Calibri";
    });

    // 删除 "Calibri" 字体
    fontsManager.RemoveEmbeddedFont(funSizedEmbeddedFont);

    // 渲染演示文稿; "Calibri" 字体被替换为现有字体
    using (IImage image = slide.GetImage(new Size(960, 720)))
    {
        image.Save("picture2_out.png", ImageFormat.Png);
    }

    // 将没有嵌入 "Calibri" 字体的演示文稿保存到磁盘
    presentation.Save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat.Ppt);
}

向演示文稿添加嵌入字体

使用 EmbedFontCharacters 枚举和两个重载的 AddEmbeddedFont 方法,您可以选择您首选的(嵌入)规则来嵌入演示文稿中的字体。以下 C# 代码演示了如何向演示文稿中嵌入和添加字体:

// 加载演示文稿
Presentation presentation = new Presentation("Fonts.pptx");

// 加载要替换的源字体
IFontData sourceFont = new FontData("Arial");

IFontData[] allFonts = presentation.FontsManager.GetFonts();
IFontData[] embeddedFonts = presentation.FontsManager.GetEmbeddedFonts();
foreach (IFontData font in allFonts)
{
    if (!embeddedFonts.Contains(font))
    {
        presentation.FontsManager.AddEmbeddedFont(font, EmbedFontCharacters.All);
    }
}

// 将演示文稿保存到磁盘
presentation.Save("AddEmbeddedFont_out.pptx", SaveFormat.Pptx);

压缩嵌入字体

为了允许您压缩嵌入在演示文稿中的字体并减少其文件大小,Aspose.Slides 提供了 CompressEmbeddedFonts 方法(由 Compress 类公开)。

以下 C# 代码演示了如何压缩嵌入的 PowerPoint 字体:

using (Presentation pres = new Presentation("pres.pptx"))
{
    Aspose.Slides.LowCode.Compress.CompressEmbeddedFonts(pres);
    pres.Save("pres-out.pptx", SaveFormat.Pptx);
}