检测PowerPoint演示文稿的缺失字体

时间:2018-06-12 15:03:05

标签: c# powerpoint office-interop office-addins

每当打开一个包含计算机上未安装的只读嵌入字体的演示文稿时,对该演示文稿的任何操作都会导致COMException: Presentation (unknown member) : Invalid request. Presentation cannot be modified.

我发现herehere,安装丢失的字体或替换它将解决问题。当我以编程方式在C#Office加载项中打开演示文稿时,我希望每次都能处理边框情况。

受到this question的启发我试图迭代Presentation.Fonts以检查它们是否嵌入。

var embeddedFonts = ((IEnumerable)presentation.Fonts)
    .Cast<Font>()
    .Where(f => f.Embedded == MsoTriState.msoTrue)
    .Select(f => f.Name);

foreach (var font in embeddedFonts)
{
    presentation.Fonts.Replace(font, "Arial");
}

不幸的是,Presentation.Fonts无法访问并抛出COMException: Fonts (unknown member) : Invalid request. Presentation cannot be modified.

有没有办法以编程方式删除丢失的字体?

0 个答案:

没有答案