使用 Java 從 OneNote 文檔中提取文本或圖像

我們可以在 OneNote 文檔中以文本、繪圖、屏幕剪輯和音頻評論的形式收集和整理筆記。我們可能偶爾需要在 Java 應用程序中以編程方式從 OneNote 文檔中提取文本或圖像。這種提取允許我們單獨重用提取的文本或圖像。在本文中,我們將學習如何使用 Java 從 OneNote 文檔中提取文本或圖像。

本文應涵蓋以下主題:

從 OneNote 中提取文本或圖像的 Java API

為了從 OneNote 文檔中提取文本和圖像,我們將使用 Aspose.Note for Java API。它允許以編程方式創建、閱讀和轉換 OneNote 文檔,而無需使用 MS 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. 之後,使用 GetChildNodes 方法以 RichText.class 作為參數獲取頁面的文本項列表。
  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());
}

我們可以一頁一頁地遍歷所有頁面並提取每個頁面的文本,如下面的代碼示例所示:

// 此代碼示例演示如何從 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. 之後,使用 GetChildNodes 方法以 Image.class 作為參數獲取圖像列表。
  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 文檔中提取圖像。此外,您可以使用文檔了解更多關於 Aspose.Note for Java API 的信息。如有任何歧義,請隨時在論壇上與我們聯繫。

也可以看看