【环境配置】

本文将通过Java程序代码来展示如何来获取Word批注所标注的文本和图片。这里使用的Word Jar包工具是Free Spire.Doc for Java,在pom.xml中按如下步骤配置内容:

内容如下:

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

【测试文档】

测试文档如图,包含对文本和图片标记的批注:

【Java代码】

import com.spire.doc.*;
import com.spire.doc.documents.CommentMark;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.Comment;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange; import javax.imageio.ImageIO;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList; public class GetMarkedTextAndImg {
public static void main(String[] args)throws IOException {
//加载Word文档
Document doc = new Document();
doc.loadFromFile("inputfile.docx"); //获取文档中批注
for(int a = 0;a<doc.getComments().getCount();a++)
{
Comment comment = doc.getComments().get(a);
//获取批注的开始标记和结束标记
Paragraph para = comment.getOwnerParagraph();
CommentMark start = comment.getCommentMarkStart();
CommentMark end = comment.getCommentMarkEnd(); //获取开始标记和结束标记在段落中的索引
int indexOfStart = para.getChildObjects().indexOf(start);
int indexOfEnd = para.getChildObjects().indexOf(end); String markedText = "";
ArrayList images = new ArrayList();
//根据索引获取批注的开始标记和结束标记之间的文字、图片
for (int i = indexOfStart + 1; i < indexOfEnd; i++)
{
if (para.getChildObjects().get(i) instanceof TextRange)
{
TextRange range = (TextRange) para.getChildObjects().get(i);
markedText += range.getText();
} if (para.getChildObjects().get(i) instanceof DocPicture)
{
DocPicture picture = (DocPicture) para.getChildObjects().get(i);
images.add(picture.getImage());
} } //打印批注标记的文本
System.out.println(markedText); //提取批注标记的图片
for (int z = 0; z< images.size(); z++)
{
File file = new File(String.format("MarkedImg.png", z));
ImageIO.write((RenderedImage) images.get(z), "PNG", file);
}
} }
}

批注标记的文本读取结果:

批注标记的图片:

另推荐阅读:

Java 添加、回复、修改(替换)、删除Word批注

Java 给Word指定字符串添加批注

Java 读取Word批注中的文本和图片

 
 

—End—

Java 获取Word批注所标记的文本和图片的更多相关文章

  1. poi获取word批注

    package test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  2. C# 获取word批注信息

    今天在Silverlight 应用程序中实现了 获取word文档批注信息 的功能. 在wcf服务继承接口类中编写的函数如下 /// <summary> /// 获取word批注信息 /// ...

  3. Java 读取Word批注中的文本和图片

    本文将介绍读取Word批注的方法,包括读取Word批注中的文本及图片.关于操作Word批注的方法还可以参考这两篇文章:Java 添加.回复.修改.删除Word批注:Java 给Word指定字符串添加批 ...

  4. [转载]java获取word里面的文本

    需求场景 开发的web办公系统如果需要处理大量的Word文档(比如有成千上万个文档),用户一定提出查找包含某些关键字的文档的需求,这就要求能够读取 word 中的文字内容,而忽略其中的文字样式.表格. ...

  5. [原创]java获取word里面的文本

    需求场景 开发的web办公系统如果需要处理大量的Word文档(比如有成千上万个文档),用户一定提出查找包含某些关键字的文档的需求,这就要求能够读取 word 中的文字内容,而忽略其中的文字样式.表格. ...

  6. Java 获取Word中的标题大纲(目录)

    概述 Word中的标题可通过"样式"中的选项来快速设置(如图1), 图1 在添加目录时,可将"有效样式"设置为"目录级别"显示(如图2),一 ...

  7. [转载]java获取word文档的条目化内容

    在开发Web办公系统或文档系统时,PageOffice组件是众所周知的在线处理微软word/ppt/excel文档的强大工具,它对WORD文档的各种处理在API层面进行了封装,屏蔽了Office VB ...

  8. [转载]JAVA获取word表格中数据的方案

    上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...

  9. [原创]java获取word文档的条目化内容

    在开发Web办公系统或文档系统时,PageOffice组件是众所周知的在线处理微软word/ppt/excel文档的强大工具,它对WORD文档的各种处理在API层面进行了封装,屏蔽了Office VB ...

随机推荐

  1. TensorRT PoolingLayer

    TensorRT PoolingLayer IPoolingLayer在通道中实现池.支持的池类型有maximum.average和maximum average混合. Layer Descripti ...

  2. IaaS、PaaS 和 SaaS:云服务模型概述

    IaaS.PaaS 和 SaaS:云服务模型概述 为您的组织选择合适的云服务模型,可以帮助您充分利用预算和 IT 资源. 基础设施即服务 (IaaS).平台即服务 (PaaS) 以及软件即服务 (Sa ...

  3. 面试一次问一次,HashMap是该拿下了(一)

    文章目录 前言 一.HashMap类图 二.源码剖析 1. HashMap(jdk1.7版本) - 此篇详解 2. HashMap(jdk1.8版本) 3. ConcurrentHashMap ~~ ...

  4. 实验4、Flask基于Blueprint & Bootstrap布局的应用服务

    1. 实验内容 模块化工程内容能够更好的与项目组内成员合作,Flask Blueprint提供了重要的模块化功能,使得开发过程更加清晰便利.此外,Flask也支持Bootstrap的使用. 2. 实验 ...

  5. 从菜鸟到大神:Java高并发核心编程(连载视频)

    任何事情是有套路的,学习是如此, Java的学习,更是如此. 本文,为大家揭示 Java学习的套路 背景 Java高并发.分布式的中间件非常多,网上也有很多组件的源码视频.原理视频,汗牛塞屋了. 作为 ...

  6. matplotlib 并列条形图

    1 绘制并列条形图,并在条形图上加标注 1.1 代码 from matplotlib import pyplot from matplotlib import font_manager import ...

  7. 解放生产力,自动化生成vue组件文档

    一.现状 Vue框架在前端开发中应用广泛,当一个多人开发的Vue项目经过长期维护之后往往会沉淀出很多的公共组件,这个时候经常会出现一个人 开发了一个组件而其他维护者或新接手的人却不知道这个组件是做什么 ...

  8. 《面试补习》- Java集合知识梳理

    一.ArrayList ArrayList 底层数据结构为 动态数组 ,所以我们可以将之称为数组队列. ArrayList 的依赖关系: public class ArrayList<E> ...

  9. MobileNet系列之MobileNet_v2

    ​ MobileNet系列之MobileNet_v1 Inception系列之Inception_v1 Inception系列之Batch Normalization Inception系列之Ince ...

  10. 1.QT多线程使用小结

    开头 一个进程可以有一个或更多线程同时运行.线程可以看做是"轻量级进程",进程完全由操作系统管理,线程即可以由操作系统管理,也可以由应用程序管理. Qt 使用QThread来管理线 ...