我们可以在 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 文档中提取所有文本:
- 首先,使用 Document 类加载 OneNote 文件。
- 之后,使用 RichText.class 作为参数调用 GetChildNodes 方法以提取文本。
- 最后,显示提取的文本。
以下代码示例展示了如何使用 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 文档的特定页面获取文本
我们可以按照以下步骤从 OneNote 文档的特定页面中提取文本:
- 首先,使用 Document 类加载 OneNote 文件。
- 接下来,使用 Page.class 作为参数调用 GetChildNodes 方法以提取页面。
- 然后,通过页面列表中的索引获取特定页面。
- 之后,使用带有 RichText.class 作为参数的 GetChildNodes 方法获取页面的文本项列表。
- 最后,显示提取的文本。
以下代码示例展示了如何使用 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());
}
我们可以逐页遍历所有页面并提取每个页面的文本,如下面的代码示例所示:
// 此代码示例演示如何从 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 文档中提取图像
我们还可以按照以下步骤从 OneNote 文档中提取图像:
- 首先,使用 Document 类加载 OneNote 文件。
- 之后,使用以 Image.class 作为参数的 GetChildNodes 方法获取图像列表。
- 最后,显示图像属性并保存到本地磁盘。
以下代码示例展示了如何使用 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);
}
获得免费许可证
您可以 获得免费的临时许可证 试用该库而不受评估限制。
结论
在本文中,我们学习了如何从整个 OneNote 文档或文档的特定页面中提取文本。我们还了解了如何以编程方式从 OneNote 文档中提取图像。此外,您可以使用 documentation 了解有关 Aspose.Note for Java API 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。