Как проверить, не содержит ли презентация нестандартный шрифт?

Я пишу надстройку PowerPoint. Я использую PowerPoint 2013, С#, Visual Studio 2013.

Когда я открываю существующую презентацию, созданную и измененную на другом компьютере (например, Mac или Linux), некоторые тексты в нестандартных шрифтах True Type не позволяют мне сохранить презентацию.

ошибка

Итак, мой вопрос

1) Можно ли отловить и обработать эту ошибку в коде?

2) Или можно как-то проверить, содержит ли презентация какой-то нестандартный шрифт?

Спасибо


person chipbk10    schedule 29.04.2015    source источник


Ответы (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 не сообщит вам, какой это шрифт.

person Steve Rindsberg    schedule 29.04.2015
comment
Спасибо за Ваш ответ. Я делаю то же, что и ваш подход, но все равно не могу сохранить презентацию. Более подробно: я проверил шрифт Gills Sans Light, и этот шрифт в коде можно встроить, но он по-прежнему мешает сохранению и в конечном итоге показывает, что Gills Sans Light не является истинным шрифтом, как вы видели на картинке. Кажется, это ошибка самой Powerpoint, когда PowerPoint не может определить этот шрифт как не встраиваемый. - person chipbk10; 30.04.2015
comment
Возможно, у вас есть несколько версий Gill Sans Light в системе? Он поставляется несколькими производителями шрифтов в различных форматах. Наличие нескольких версий может вызвать проблемы. Или предположим, что я использую Gill Sans Light, например, в одном невстраиваемом формате от Adobe. Я отправляю вам файл, у вас есть Gill Sans Light в формате TT, поэтому Windows заменяет его, но когда дело доходит до сохранения, PPT не может встроить фактически используемый шрифт, потому что его нет в системе. Или наоборот; замененный шрифт PS, который не может быть встроен. - person Steve Rindsberg; 30.04.2015
comment
Итак, что мне делать? - person chipbk10; 04.05.2015
comment
Если презентацию нужно распространять среди других людей, используйте только шрифты, встраиваемые при установке или лучше, используйте только шрифты, которые будут общими для всех систем, поэтому вам вообще не нужно встраивать шрифты. - person Steve Rindsberg; 04.05.2015