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

发布于 2024-12-17 21:22:39 字数 253 浏览 1 评论 0原文

是否存在 PHP/Ruby 库或 Web 服务,可以从 Microsoft Onenote 文档中以编程方式提取信息

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

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

Does there exist a PHP/Ruby library or a web-service that enables programmatic extraction of information from Microsoft Onenote documents?

The solution is to be implemented in a web application backend.

I am not looking for windows specific solutions. Also I am not looking for solutions that require users to download application extensions or installable softwares.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ゞ记忆︶ㄣ 2024-12-24 21:22:39

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

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

随意使用它(apache 许可证)

Here's a cross platform one-note parser. (.one -> .html) It's pretty primitive, but it's open source and may get you going

https://github.com/dropbox/onenote-parser
in case that helps you parse the file format.

Feel free to use it (apache license)

羞稚 2024-12-24 21:22:39

简单的解决方案

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

您可以在这篇 msdn 文章中找到详细的演练,然后您可以访问内容与代码类似:

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文档此处,其中还包含举几个例子。

低级方法

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

我希望这适合您的需求。

Easy solution

You could easily write your own extractor utility in C# using the Microsoft.Office.Interop.OneNote API.

You can find a detailed walkthrough in this msdn article, then you could access the content with a code similar to this:

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));
    }
  }
}

You can read the api documentation here, which also contains a few examples.

Low level approach

In the case your environment does not allow to use this official library, then I don't know of a unix port, but an Office document is stored in XML format. You only need an XML parser to extract the information you need.
Here you have the OneNote format specification. (there is a pdf link to the latest update at the top)
You may then use the parser of your choice and create your little utility. My suggestion for ruby would be libxml.

I hope this suits your needs.

怀念你的温柔 2024-12-24 21:22:39

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

Best bet is to learn how to do XML parsing in PHP/Ruby and analyse OneNote documents to figure out how they're structured.
Once you figure the .one files out, you can use PHP to extract the required information from it.
Check this link out, might help you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文