2012-03-30 38 views
5

我有一個小小的C#應用​​程序,它通過COM Interop API從Microsoft Publisher文件中提取文本。 這工作正常,但我掙扎,如果我在一個部分有多個樣式。潛在地,一個單詞中的每個字符可以具有不同的字體,格式等。
我是否真的必須比較字符之後的字符?或者是有什麼讓我回到不同的風格部分?有點像我可以得到不同的段落?通過Interop獲取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; 
     } 
    } 
} 

或者通常有更好的方法從發佈者文件中提取文本?但是我必須能夠用相同的格式寫回它。這是爲了翻譯。

回答

0

我們嘗試了一種方法,我們只是比較每個字符儘可能多的字體樣式。不漂亮,但在大多數情況下工作...

0

您可以考慮使用剪貼板將文本部分複製爲RTF,您可以稍後將其粘貼回RTF,如同Word下面的示例一樣。我不熟悉Publisher的對象模型。

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

除此之外,與任何辦公產品互操作,我還沒有發現的應用的樣式的集合。

+0

感謝您的意見。但是通過RTF轉換,我可能會失去一些格式化選項,我想避免這些選項。目前我只比較每個角色和下一個角色...... – Remy 2012-04-08 14:52:31

相關問題