• Java 获取Word批注所标记的文本和图片


    【环境配置】

    本文将通过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—

  • 相关阅读:
    Selenium+java
    小白学习安全测试(一)——Http协议基础
    解决chrome运行报错unknown error: cannot get automation extension
    Eclipse 中 不能创建 Dynamic web project
    Jmeter遇到Connection reset by peer的解决方法
    用Java检测远程主机是否能被连接
    Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息
    jenkins的svn路径中文问题
    MySql的存储引擎介绍
    Netty SSL性能调优
  • 原文地址:https://www.cnblogs.com/Yesi/p/15044424.html
Copyright © 2020-2023  润新知