【问题标题】:How to check whether the presentation contains some non-standard font?如何检查演示文稿是否包含一些非标准字体?
【发布时间】:2015-07-08 08:11:38
【问题描述】:

我正在编写一个插件 PowerPoint。我正在使用 PowerPoint 2013、C#、Visual Studio 2013。

当我打开在另一台计算机(例如 Mac 或 Linux)上创建和修改的现有演示文稿时,一些非标准 True Type 字体的文本阻止我保存演示文稿。

所以我的问题是

1) 是否可以在代码中捕获并处理此错误?

2) 或者有什么方法可以检查演示文稿是否包含一些非标准字体?

谢谢

【问题讨论】:

    标签: vba powerpoint office-interop powerpoint-2013


    【解决方案1】:

    没有什么能阻止您保存演示文稿;该消息告诉您,由于演示文稿使用了不可嵌入的字体,因此您无法保存嵌入了字体的演示文稿。

    您可以查看演示文稿的 .Fonts 集合并确定每种字体是否可嵌入:

    Sub FontList()
        Dim x As Long
        With ActivePresentation.Fonts
            For x = 1 To .Count
                Debug.Print .Item(x).Name & vbTab & .Item(x).Embeddable
            Next
        End With
    End Sub
    

    如果您发现无法嵌入的字体,您可以选择不使用嵌入字体保存演示文稿(SaveAs 的第三个参数设置为 False 而不是 True)。

    或者更实际地,使用 .Fonts.Replace 替换不同的字体(可嵌入的字体)。我希望您必须为此创建自己的替换表;如果您的系统上没有该字体,Windows 将替换另一种字体,但 PPT 不会告诉您它是什么字体。

    【讨论】:

    • 感谢您的回答。我和你的方法一样,但仍然无法保存演示文稿。更多细节:我检查字体“Gills Sans Light”,代码中的这个字体是可嵌入的,但它仍然无法保存,最终显示“Gills Sans Light”不是你在图片中看到的真实类型.当 PowerPoint 无法将此字体检测为“不可嵌入”时,这似乎是 Powerpoint 本身的错误
    • 您的系统上是否有多个版本的 Gill Sans Light?它由几个不同的字体代工厂以几种不同的格式提供。多个版本可能会导致问题。或者假设我使用 Adob​​e 的一种非嵌入格式的 Gill Sans Light,例如。我把文件发给你,你有 TT 格式的 Gill Sans Light,所以 Windows 会替换它,但是在保存时,PPT 无法嵌入实际使用的字体,因为它不在系统上。或者反过来;替换的字体是PS,不能嵌入。
    • 那么,我该怎么办?
    • 如果必须将演示文稿分发给其他人,请仅使用可安装的字体或更好的字体,请仅使用所有系统通用的字体,因此您根本不需要嵌入字体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2018-06-17
    • 2013-10-25
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多