我有一个小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文件中提取文本的更好方法吗?但我必须能够以相同的格式将其写回来。这是翻译。
答案 0 :(得分:0)
您可以考虑使用剪贴板将文本部分复制为RTF,稍后您可以将其粘贴回RTF,如下面的Word示例所示。我不熟悉Publisher的对象模型。
string text = wordDocument.Content.Paragraphs[0];
System.Windows.Forms.Clipboard.SetText(text, TextDataFormat.Rtf);
除此之外,在与任何办公产品使用互操作时,我还没有找到应用样式的集合。
答案 1 :(得分:0)
我们尝试了一种方法,我们只是为每个字符比较尽可能多的字体样式。不漂亮,但在大多数情况下都有效......