通过Interop在Microsoft Publisher中获取不同的样式部分

时间:2012-03-30 13:28:33

标签: c# ms-office office-interop publisher

我有一个小C#应用程序,它通过COM Interop API从Microsoft Publisher文件中提取文本。 这很好用,但如果我在一个部分中有多个样式,我就会挣扎。一个单词中的每个字符可能都有不同的字体,格式等 我真的要比较角色吗?或者有什么能让我回归不同风格的部分吗?有点像我可以得到不同的段落?

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 :(得分:0)

您可以考虑使用剪贴板将文本部分复制为RTF,稍后您可以将其粘贴回RTF,如下面的Word示例所示。我不熟悉Publisher的对象模型。

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

除此之外,在与任何办公产品使用互操作时,我还没有找到应用样式的集合。

答案 1 :(得分:0)

我们尝试了一种方法,我们只是为每个字符比较尽可能多的字体样式。不漂亮,但在大多数情况下都有效......