每当打开一个包含计算机上未安装的只读嵌入字体的演示文稿时,对该演示文稿的任何操作都会导致COMException: Presentation (unknown member) : Invalid request. Presentation cannot be modified.
我发现here和here,安装丢失的字体或替换它将解决问题。当我以编程方式在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.
有没有办法以编程方式删除丢失的字体?