Spire.Doc系列教程:如何在 Java 中提取 Word 文档中的批注文本和图片

翻译|使用教程|编辑:吉炜炜|2024-12-27 10:38:45.807|阅读 29 次

概述:Word 文档中的批注通常用于协作审阅和反馈。这些批注可能包含文本和图片,它们为文档改进提供了重要的参考信息。本文将演示如何使用 Spire.Doc for Java 在 Java 中提取 Word 文档中的批注文本和图片。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

相关链接:

Word 文档中的批注通常用于协作审阅和反馈。这些批注可能包含文本和图片,它们为文档改进提供了重要的参考信息。提取批注中的文本和图片可以帮助你分析和评估审阅者的反馈,从而全面了解文档的优点、缺点以及改进建议。本文将演示如何使用 Spire.Doc for Java 在 Java 中提取 Word 文档中的批注文本和图片

Spire.Doc for Java下载

安装 Spire.Doc for Java

首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作为依赖项。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>12.11.9</version>
    </dependency>
</dependencies>

Java 提取 Word 文档批注中的文本

使用 Java 获取 Word 文档批注中的文本并不难。首先遍历 Word 文档中的所有批注,然后使用 Spire.Doc for Java 提供的 Document.getComments().get() 方法获取当前的批注,再然后遍历批注正文的每一个段落并获取当前段落,最后使用 Paragraph.getText() 方法获取该段落的文本。下面是具体的操作步骤:

  • 创建一个 Document 类的对象。
  • 通过 Document.loadFromFile() 方法,加载一个 Word 文档。
  • 遍历这个文档中的所有批注。
  • 对于每条批注,遍历其正文中的所有段落。
  • 对于每个段落,使用 Paragraph.getText() 方法提取其文本内容。
  • 将提取到的内容保存为文本文件。
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.io.*;

public class ExtractComments {
   public static void main(String[] args) throws IOException {

       // 创建一个 Document 类的对象
       Document doc = new Document();

       // 加载一个 Word 文档
       doc.loadFromFile("/AI绘画的利弊及法律应对.docx");

       // 遍历文档中的每个批注
       for (int i = 0; i < doc.getComments().getCount(); i++) {
           // 获取当前索引处的批注
           Comment comment = doc.getComments().get(i);

           // 遍历批注正文中的每个段落
           for (int j = 0; j < comment.getBody().getParagraphs().getCount(); j++) {
               // 获取当前的段落
               Paragraph para = comment.getBody().getParagraphs().get(j);

               // 获取该段落的文本
               String result = para.getText() + "\r\n";

               // 将提取到的批注保存为文本文件
               writeStringToTxt(result, "/批注信息.txt");
           }
       }

       // 释放资源
       doc.dispose();
   }

   // 自定义将数据写入到文本文件的方法
   public static void writeStringToTxt(String content, String txtFileName) throws IOException {
       FileWriter fWriter = new FileWriter(txtFileName);
       try {
           // 写入文本文件
           fWriter.write(content);
       } catch (IOException ex) {
           ex.printStackTrace();
       } finally {
           try {
               // 关闭文件写入器
               fWriter.flush();
               fWriter.close();
           } catch (IOException ex) {
               ex.printStackTrace();
           }
       }
   }
}

Java 提取 Word 文档批注中的文本

Java 提取 Word 文档批注中的图片

要从 Word 文档的批注中提取图片,需要遍历批注段落中的子对象,找到 DocPicture 对象。然后通过 DocPicture.getImageBytes() 方法获取图片数据,并将其保存为图像文件。

  • 创建一个 Document 类的对象。
  • 使用 Document.loadFromFile() 方法加载一个 Word 文档。
  • 创建一个列表以储存提取的图片数据。
  • 遍历文档中的批注。
  • 对每一个批注,遍历其批注正文的每一个段落。
  • 对每个段落,遍历该段落的所有子对象。
  • 检查该对象是否为 DocPicture 类型。
  • 如果对象是 DocPicture,则使用 DocPicture.getImageBytes 属性获取图片数据并将其添加到列表中。
  • 将列表中的图片数据保存为图像文件。
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.io.*;
import java.nio.file.*;
import java.util.ArrayList;
import java.util.List;

public class ExtractCommentImages {
   public static void main(String[] args) {
       // 创建一个 Document 对象
       Document document = new Document();

       // 加载包含批注的 Word 文档
       document.loadFromFile("/AI绘画的利弊及法律应对.docx");

       // 创建一个列表来存储提取的图片数据
       List images = new ArrayList<>();

       // 遍历文档中的批注
       for (int i = 0; i < document.getComments().getCount(); i++) {
           Comment comment = document.getComments().get(i);

           // 遍历批注正文中的所有段落
           for (int j = 0; j < comment.getBody().getParagraphs().getCount(); j++) {
               Paragraph paragraph = comment.getBody().getParagraphs().get(j);

               // 遍历段落中的所有子对象
               for (int k = 0; k < paragraph.getChildObjects().getCount(); k++) {
                   DocumentObject obj = paragraph.getChildObjects().get(k);

                   // 检查是否为图片
                   if (obj instanceof DocPicture) {
                       DocPicture picture = (DocPicture) obj;

                       // 获取图片数据并添加到列表
                       images.add(picture.getImageBytes());
                   }
               }
           }
       }

       // 指定输出路径
       String outputDir = "/批注图片/";
       new File(outputDir).mkdirs();

       // 保存图片数据为文件
       for (int i = 0; i < images.size(); i++) {
           String fileName = String.format("批注图片-.png", i);
           Path filePath = Paths.get(outputDir, fileName);
           try (FileOutputStream fos = new FileOutputStream(filePath.toFile())) {
               fos.write(images.get(i));
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
   }
}

Java 提取 Word 文档批注中的图片

欢迎下载|体验更多E-iceblue产品

获取更多信息请咨询慧都在线客服  ;技术交流Q群(767755948)

慧都年终大促火热开启


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP