Копировать специальные символы из одной презентации PowerPoint в другую - PullRequest
2 голосов
/ 11 января 2010

Мне нужно скопировать текст из одной презентации PowerPoint в другую. Однако у меня возникают проблемы при копировании специальных символов, таких как смайлики, которые отображаются в целевой презентации в виде пустых полей. Глядя на файл Open XML в исходной презентации, я вижу, что Run, содержащий смайлик, имеет атрибут SymbolFont:

<a:sym typeface="Wingdings" />

Однако в VBA Shape.TextFrame2.TextRange2.Font = шрифт этого Run - показывает Arial.

Как определить SymbolFont текста Run, используя VBA или C # (не XML)? Тогда я мог бы указать этот SymbolFont в целевой презентации.

Возможно, есть другие способы копирования текста, которые не связаны с XML?

Обратите внимание, что эта проблема возникает не только со смайликами; другие специальные символы могут отображать разные SymbolFonts, такие как:

<a:symTypeface = "Symbol", PitchFamily = 18, CharacterSet = 2>

Пример кода:

getRuns(TextRange2 paragraph)
{
    foreach(TextRange2 run in paragraph.get_Runs(-1,-1))
    _myRuns.Add(new MyRun {_text=run.Text, _font=run.Font} );
}

copyRunsToParagraph(TextRange2 paragraph)
{
    foreach(MyRun run in _myRuns)
        paragraph=paragraph.InsertAfter(run._text);
}

Примечание: Run.Font, кажется, возвращает только латинский шрифт, а не шрифт Symbol, например, Arial, но не Wingdings. Как я уже писал, разные символы могут иметь разные SymbolFonts, поэтому всегда использование Wingdings не работает.

1 Ответ

0 голосов
/ 24 февраля 2010

Этого нельзя сделать в VBA.

...