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

本文关键字:样式 分区 获取 Interop Microsoft Publisher 通过 | 更新日期: 2023-09-27 18:29:27

我有一个小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文件中提取文本?但我必须能够用同样的格式把它写回来。这是翻译的。

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

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

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

除此之外,在将interop与任何办公产品一起使用时,我还没有发现应用样式的集合。

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