【环境配置】

本文将通过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. H.265视频编码与技术全析(上)

    H.265视频编码与技术全析(上) 一. 概述 作为新一代视频编解码格式,H.265得到越来越广泛的应用.不久之前,苹果公司在翘首期盼中发布了iPhone6,该款手机较之以往的iPhone,不仅仅只是 ...

  2. 72 个网络应用安全实操要点,全方位保护 Web 应用的安全

    原文地址:Web Application Security Checklist 原文作者:Teo Selenius(已授权) 译者 & 校正:HelloGitHub-小熊熊 & 卤蛋 ...

  3. ThreadLocal源码阅读笔记

    功能描述 ThreadLocal解决了访问共享变量的阻塞问题,并且不需要像CAS操作一样牺牲CPU资源,它为每一个线程维护了一个变量副本,每个线程在访问ThrealLocal里面的变量时实际上访问的是 ...

  4. BLO

    BLO 内存限制:162 MiB 时间限制:1000 ms 标准输入输出     题目描述 Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ...

  5. 详解详解Java中static关键字和final关键字的功能

    摘要:static关键字和final关键字是Java语言的核心,深入理解他们的功能非常重要. 本文分享自华为云社区<Java: static关键字与final关键字>,原文作者:唐里 . ...

  6. ZooKeeper分布式锁的实现

    ZooKeeper分布式锁的实现. 在分布式的情况下,sychornized 和 Lock 已经不能满足我们的要求了,那么就需要使用第三方的锁了,这里我们就使用 ZooKeeper 来实现一个分布式锁 ...

  7. beego搭建api服务

    beego介绍 beego是一个Golang实现的开源Go应用开发框架,他可以用来快速开发 API.Web 及后端服务等各种应用,是一个 RESTful的框架,主要设计灵感来源于tornado.sin ...

  8. python安装、卸载包的方法

    anaconda包管理器 conda命令[1] 环境管理 conda info -e # 查看当前已安装的环境 conda create -n py27 python=2.7 # 添加2.7版本的Py ...

  9. USB上位机通信:CyAPI

    至今的工作中,有USB接口通信的需求,记录一下. 建立一个USB设备对象 CCyUSBDevice *USBDevice = new CCyUSBDev(Handle): 打开USB设备 一个USB设 ...

  10. 『无为则无心』Python序列 — 22、Python集合及其常用操作

    目录 1.Python集合特点 2.Python集合的创建 3.操作集合常用API (1)增加数据 @1.add()方法 @2.update()方法 (2)删除数据 @1.remove()方法 @2. ...