【发布时间】:2017-05-22 11:29:55
【问题描述】:
LINK Extract Embedded Image Object in RTF我下面的代码与我提供的链接相同,它在 97-2003 文档中运行良好,而相同的代码现在在 office 2007/2010 中不起作用。我们通常检查其中包含 OLE 对象的 RTF,并根据公司规则拒绝我们的转换,但即使在 office-2007/2010 创建的 RTF 中存在写为“对象”的文本,我们的代码也会拒绝。在 Office-2007 创建的 RTF 中是否有任何解决方案可以识别?
using (StreamReader sr = new StreamReader(filePath))
{
RtfReader reader = new RtfReader(sr);
IEnumerator<RtfObject> enumerator = reader.Read().GetEnumerator();
while (enumerator.MoveNext())
{
if (enumerator.Current.Text == "object")
{
hasOLEObjects = true;
break;
}
}
}
public RtfReader(TextReader reader)
{
if (reader == null)
throw new ArgumentNullException("reader");
Reader = reader;
}
public class RtfObject
{
public RtfObject(string text)
{
if (text == null)
throw new ArgumentNullException("text");
Text = text.Trim();
}
public string Text { get; private set; }
}
【问题讨论】:
-
RtfReader来自什么命名空间/包? -
它是一个文本阅读器
-
没有名为
RtfReader的内置类。这看起来像是您自己的项目中的一个类。除非猜测明显的问题,否则无法帮助您未发布的代码。例如,为什么要检查元素的 contents 而不是其类型?RtfReader不会暴露元素类型吗?现在,您拒绝在其文本中包含单词object的任何文档。如果用户开始使用带有Object标题的模板怎么办? -
NO RtfReader 不公开元素类型,是的,它的类来自我自己的项目。我想知道 RTF 中是否有任何 OLE 对象。我在谷歌搜索了很多,但除了下面的链接之外找不到 Soultion。请看一下并建议我如何在 RTF 中找到对象。 stackoverflow.com/questions/14779647/….