Получите различные разделы стиля в Microsoft Publisher через Interop - PullRequest
5 голосов
/ 30 марта 2012

У меня есть небольшое приложение на C #, которое извлекает текст из файла Microsoft Publisher через COM Interop API. Это отлично работает, но я изо всех сил, если у меня есть несколько стилей в одном разделе. Потенциально каждый символ в слове может иметь другой шрифт, формат и т. Д.
Неужели мне действительно нужно сравнивать символ за персонажем? Или есть что-то, что возвращает мне разные стили? Вроде как я могу получить разные параграфы?

foreach (Microsoft.Office.Interop.Publisher.Shape shp in pg.Shapes)
{
    if (shp.HasTextFrame == MsoTriState.msoTrue)
    {
        text.Append(shp.TextFrame.TextRange.Text);

        for(int i = 0; i< shp.TextFrame.TextRange.WordsCount; i++)
        {
            TextRange range = shp.TextFrame.TextRange.Words(i+1, 1);
            string test = range.Text;
        }
    }
}

Или вообще есть лучший способ извлечь текст из файла Publisher? Но я должен быть в состоянии написать его обратно с тем же форматированием. Это для перевода.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2012

Мы попробовали подход, в котором мы сравнивали для каждого символа как можно больше стилей шрифта.Не красиво, но работает в большинстве случаев ...

0 голосов
/ 06 апреля 2012

Вы можете рассмотреть возможность использования буфера обмена для копирования текстовых разделов в формате RTF, которые впоследствии можно вставить обратно в формате RTF, как в примере ниже для Word.Я не знаком с объектной моделью Publisher.

string text = wordDocument.Content.Paragraphs[0]; System.Windows.Forms.Clipboard.SetText(text, TextDataFormat.Rtf);

Кроме этого, я не нашел коллекцию примененных стилей при использовании взаимодействия с любым из офисных продуктов.

...