5

我有一个小 C# 应用程序,它通过 COM 互操作 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 文件中提取文本?但我必须能够以相同的格式实际写回它。是为了翻译。

4

2 回答 2

0

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

于 2012-09-21T14:10:50.753 回答
0

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

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

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

于 2012-04-06T03:47:33.097 回答