使用 Java 从 OneNote 文档中提取文本或图像

我们可以在 OneNote 文档中以文字、图画、截屏、音频评论等形式收集和整理笔记。我们有时可能需要在 Java 应用程序中以编程方式从 OneNote 文档中提取文本或图像。这种提取允许我们单独重用提取的文本或图像。在本文中,我们将学习如何使用 Java 从 OneNote 文档中提取文本或图像。

本文将涵盖以下主题:

Java API 从 OneNote 中提取文本或图像

为了从 OneNote 文档中提取文本和图像,我们将使用 Aspose.Note for Java API。它允许在不使用 MS OneNote 的情况下以编程方式创建、阅读和转换 OneNote 文档。请下载 API 的 JAR 或在基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-note</artifactId>
    <version>22.1</version>
    <classifier>jdk17</classifier>
</dependency>

使用 Java 从 OneNote 文档中提取所有文本

我们可以按照下面给出的步骤轻松地从 OneNote 文档中提取所有文本:

  1. 首先,使用 Document 类加载 OneNote 文件。
  2. 之后,使用 RichText.class 作为参数调用 GetChildNodes 方法以提取文本。
  3. 最后,显示提取的文本。

以下代码示例展示了如何使用 Java 从 OneNote 文件中提取所有文本。

// 此代码示例演示如何从 OneNode 文档中提取所有文本。
// 将文档加载到 Aspose.Note。
Document oneFile = new Document("D:\\Files\\Note\\Sample1.one");

// 检索文本
List<RichText> textNodes = (List<RichText>) oneFile.getChildNodes(RichText.class);

for (RichText richText : textNodes) {
  if(!richText.getText().isBlank())
    System.out.println(richText.getText().toString());
}
使用 Java 从 OneNote 文档中提取所有文本

使用 Java 从 OneNote 文档中提取所有文本

从 Java 中的 OneNote 文档的特定页面获取文本

我们可以按照以下步骤从 OneNote 文档的特定页面中提取文本:

  1. 首先,使用 Document 类加载 OneNote 文件。
  2. 接下来,使用 Page.class 作为参数调用 GetChildNodes 方法以提取页面。
  3. 然后,通过页面列表中的索引获取特定页面。
  4. 之后,使用带有 RichText.class 作为参数的 GetChildNodes 方法获取页面的文本项列表。
  5. 最后,显示提取的文本。

以下代码示例展示了如何使用 Java 从 OneNote 文件的特定页面中提取文本。

// 此代码示例演示如何从 OneNode 文档的特定页面中提取文本。
// 将文档加载到 Aspose.Note
Document doc = new Document("D:\\Files\\Note\\Sample1.one");

// 获取页面节点列表
List<Page> pages = doc.getChildNodes(Page.class);

// 按索引获取页面
Page page = pages.get(0);

// 获取页面文本
List<RichText> textNodes = (List<RichText>) page.getChildNodes(RichText.class);

// 显示文字
for (RichText richText : textNodes) {
  if(!richText.getText().isBlank())
    System.out.println(richText.getText().toString());
}
Extract Text from a Specific Page of OneNote Document in Java

我们可以逐页遍历所有页面并提取每个页面的文本,如下面的代码示例所示:

// 此代码示例演示如何从 OneNode 文档的页面中提取文本。
// 将文档加载到 Aspose.Note。
Document doc = new Document("D:\\Files\\Note\\Sample1.one");

// 获取页面节点列表
List<Page> pages = doc.getChildNodes(Page.class);

for (Page p : pages) {
  System.out.println("---- Page Started Here ----");

  List<RichText> textNodes = (List<RichText>) p.getChildNodes(RichText.class);

 for (RichText richText : textNodes) {
    if(!richText.getText().isBlank())
      System.out.println(richText.getText().toString());
  }

  System.out.println("---- Page Ended Here ----");
  System.out.println();
}
从 Java 中的 OneNote 文档的特定页面获取文本

在Java中从所有页面中一一获取文本

使用 Java 从 OneNote 文档中提取图像

我们还可以按照以下步骤从 OneNote 文档中提取图像:

  1. 首先,使用 Document 类加载 OneNote 文件。
  2. 之后,使用以 Image.class 作为参数的 GetChildNodes 方法获取图像列表。
  3. 最后,显示图像属性并保存到本地磁盘。

以下代码示例展示了如何使用 Java 从 OneNote 文件中提取图像。

// 此代码示例演示如何从 OneNode 文档中提取图像。
// 将文档加载到 Aspose.Note
Document doc = new Document("D:\\Files\\Note\\Sample1.one");

// 获取所有图像
List<Image> list = doc.getChildNodes(Image.class);
System.out.printf("Total Images: %s\n\n", list.size());

// 遍历列表
for (int i = 0; i < list.size(); i++) {
  Image image = list.get(i);

  // 显示图像属性
  System.out.println("Width: " + image.getWidth());
  System.out.println("Height: " + image.getHeight());
  System.out.println("OriginalWidth: " + image.getOriginalWidth());
  System.out.println("OriginalHeight: " + image.getOriginalHeight());
  System.out.println("FileName: " + image.getFileName());
  System.out.println("LastModifiedTime: " + image.getLastModifiedTime());

  String outputFile = "ExtractImages_out" + i + "_" + image.getFileName();

  // 保存图像
  byte[] buffer = image.getBytes();
  Files.write(Paths.get("D:\\Files\\Note\\Images\\" + outputFile), buffer);
  System.out.printf("File saved: %s\n", outputFile);
}
使用 Java 从 OneNote 文档中提取图像

使用 Java 从 OneNote 文档中提取图像

获得免费许可证

您可以 获得免费的临时许可证 试用该库而不受评估限制。

结论

在本文中,我们学习了如何从整个 OneNote 文档或文档的特定页面中提取文本。我们还了解了如何以编程方式从 OneNote 文档中提取图像。此外,您可以使用 documentation 了解有关 Aspose.Note for Java API 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看