问题:
我需要读取一个包含OLE对象作为内部文档的RTF文件。
RTF文件= [Ole对象(Word文档)已嵌入其中。]
Sample RTF File that contains word as OLE Embedded into it.
我已经完成的参考:
他们在这里完成了一个程序,以提取嵌入到OLE中的图像。
我已经提取了标记为正确答案的程序,但是它对我不起作用。
使用OpenXML SDK。 (它无法打开RTF文件。)
一些其他SDK,例如GemBox等。无法打开innerdocument。 RTF中的ole)
我已完成的工作:
我已经使用了 microsoft.office.interop.word.dll ,它给出了准确的答案,但在服务器上不起作用。
例如:它将使用MS WORD打开RTF文件,并安装在客户端计算机中,而服务器中未安装WORD APPLICATION。
所以,这不适合我。
我需要打开并阅读RTF OLE内容,并且需要存储在字符串中(例如,例如)。用字符串bcoz我可以做很多事情。
有人可以解决我的问题吗??
答案 0 :(得分:2)
请使用以下代码示例从RTF中提取OLE对象(Word文档)并将其导入Aspose.Words的DOM中以读取其内容。希望对您有帮助。
Document doc = new Document(MyDir + "SAMPLE.rtf");
Shape shape = (Shape)doc.GetChild(NodeType.Shape, 0, true);
if (shape.OleFormat != null)
{
//Save the document to disk.
shape.OleFormat.Save(MyDir + "output" + shape.OleFormat.SuggestedExtension);
if (shape.OleFormat.SuggestedExtension == ".docx")
{
//Import the .docx ole object into Aspose.Words' DOM
Document ole = new Document(MyDir + "output" + shape.OleFormat.SuggestedExtension);
Console.WriteLine(ole.ToString(SaveFormat.Text));
}
}
我与Aspose一起担任开发人员推广人员。
答案 1 :(得分:0)
感谢您的回答。这是该代码的另一个版本,该代码迭代并使用原始文件名将所有OLE保存在本地路径中。
string MyDir = @"E:\temp\";
Document doc = new Document(MyDir + "Requirement#4.rtf");
NodeCollection nodeColl = doc.GetChildNodes(NodeType.Shape, true);
foreach (var node in nodeColl)
{
Shape shape1 = (Shape)node;
if (shape1.OleFormat != null)
{
shape1.OleFormat.Save(MyDir + shape1.OleFormat.SuggestedFileName + shape1.OleFormat.SuggestedExtension);
}
}