Чтение RTF-файла, содержащего встроенный объект OLE - PullRequest
0 голосов
/ 22 октября 2018

Вопрос:

Мне нужно прочитать RTF-файл, содержащий OLE-объект, как внутренний документ.

RTF-файл = [Ole-объект(текстовый документ) встроен в него.]

Образец RTF-файла, который содержит слово как встроенное в него слово OLE.

Ссылка, которую я сделал:

  1. OLE как изображение в RTF

Здесь они сделали программу для извлечения изображения, встроенного как OLE в RTF.

Я извлек программу, которая помечена как правильный ответ, но у меня она не работает.

Использование OpenXML SDK.(он не может быть в состоянии открыть файлы RTF.)

некоторый другой SDK, такой как GemBox и т. д., который не может быть в состоянии открыть внутренний документ, т.е.ole в RTF)

Работа, которую я проделал:

Я сделал, используя microsoft.office.interop.word.dll , который дает точный ответ, но не будет работать на сервере.

Например, открывает файл RTF с использованием MS WORD и устанавливается на клиентский компьютер, на котором нетПРИЛОЖЕНИЕ СЛОВА Установлено на сервере.

так что это не подходит для меня.

Мне нужно открыть и прочитать OLE-содержимое RTF, и мне нужно сохранить в строке (скажем, например),bcoz со строкой, я могу сделать много вещей.

Может у кого-нибудь есть идея, чтобы решить мою проблему .?

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Спасибо за ответ выше.Вот еще одна версия кода, которая выполняет итерацию и сохраняет все 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);
                }
            }
0 голосов
/ 24 октября 2018

Пожалуйста, используйте следующий пример кода, чтобы извлечь объект OLE (документ Word) из RTF и импортировать его в DOM Aspose.Words для чтения его содержимого.Надеюсь, это поможет вам.

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 как Developer Evangelist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...