Извлечение текста из документа OneNote в «архивном формате» - PullRequest
1 голос
/ 19 июня 2020

У меня есть документ OneNote в формате архива, загруженный из SharePoint с помощью CSOM. Я пытаюсь извлечь из него текстовое содержимое с помощью IFilter, но процесс завершается ошибкой FILTER_E_UNKNOWNFORMAT (0x8004170 C). У меня установлен OneNote, и IFilter для файлов .one зарегистрирован правильно. Если я открываю этот документ в OneNote, он отображает небольшой баннер , предлагающий преобразование в редактируемый формат . После преобразования я могу загрузить файл в IFilter и прочитать текст. Я также могу делать то же самое с записными книжками, созданными локально. Я хотел бы найти способ достичь того же результата программно, без взаимодействия с пользователем. Я пытался использовать библиотеки взаимодействия OneNote для преобразования записной книжки в PDF, а затем извлекать текст из файла PDF, но мне это кажется излишним.

    Microsoft.Office.Interop.OneNote.IApplication app = new Microsoft.Office.Interop.OneNote.ApplicationClass();

    try
    {
        app.OpenHierarchy("d:\\Note.one", string.Empty, out string hierarchyId, Microsoft.Office.Interop.OneNote.CreateFileType.cftNone);
        app.SyncHierarchy(hierarchyId);
        app.Publish(hierarchyId, $"d:\\Note.pdf", Microsoft.Office.Interop.OneNote.PublishFormat.pfPDF);
    }
    finally
    {
        System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
    }

Я знаю, что могу получить доступ к документу OneNote содержимое напрямую, без преобразования в PDF, но я хочу по возможности избегать использования библиотек взаимодействия. Есть ли у кого-нибудь опыт программного чтения документов OneNote или кто-нибудь знает инструмент, который выполняет вышеупомянутое преобразование? Или есть другой способ загрузки документов OneNote из SharePoint, который не создает такие архивные файлы? Будем признательны за любые предложения.

...