用于提取Microsoft Onenote文档信息的库/服务

时间:2011-11-24 04:54:09

标签: php ruby web-services onenote

是否存在支持从Microsoft Onenote documents以编程方式提取信息的PHP / Ruby库或Web服务?

该解决方案将在Web应用程序后端实现。

我不是在寻找特定于Windows的解决方案。此外,我不是在寻找需要用户下载应用程序扩展或可安装软件的解决方案。

3 个答案:

答案 0 :(得分:3)

这是一个跨平台的单音符解析器。 (.one - > .html)这是非常原始的,但它是开源的,可能会让你前进

https://github.com/dropbox/onenote-parser 如果它可以帮助您解析文件格式。

随意使用它(apache许可证)

答案 1 :(得分:1)

简易解决方案

您可以使用Microsoft.Office.Interop.OneNote API在C#中轻松编写自己的提取程序实用程序。

您可以在this msdn article中找到详细的演练,然后您可以使用与此类似的代码访问内容:

using System;
using System.Linq;
using System.Xml.Linq;
using Microsoft.Office.Interop.OneNote;

class Program
{
  static void Main(string[] args)
  {
    var onenoteApp = new Application();

    string notebookXml;
    onenoteApp.GetHierarchy(null, HierarchyScope.hsPages, out notebookXml);

    var doc = XDocument.Parse(notebookXml);
    var ns = doc.Root.Name.Namespace;
    var pageNode = doc.Descendants(ns + "Page").Where(n => 
      n.Attribute("name").Value == "Test page").FirstOrDefault();
    if (pageNode != null)
    {
      string pageXml;
      onenoteApp.GetPageContent(pageNode.Attribute("ID").Value, out pageXml);
      Console.WriteLine(XDocument.Parse(pageXml));
    }
  }
}

您可以阅读api文档here,其中还包含一些示例。

低级别方法

如果您的环境不允许使用此官方库,那么我不知道unix端口,但Office文档以XML格式存储。您只需要一个XML解析器来提取所需的信息。 这里有OneNote format specification。 (顶部有最新更新的pdf链接) 然后,您可以使用您选择的解析器并创建您的小实用程序。我对红宝石的建议是libxml

我希望这符合您的需求。

答案 2 :(得分:0)

最好的办法是学习如何在PHP / Ruby中进行XML解析,并分析OneNote文档以确定它们的结构。 一旦你想出.one文件,就可以使用PHP从中提取所需的信息。 检查this链接,可能对您有帮助。