zoukankan      html  css  js  c++  java
  • Java 读取Word批注中的文本和图片

    本文将介绍读取Word批注的方法,包括读取Word批注中的文本及图片。关于操作Word批注的方法还可以参考这两篇文章:Java 添加、回复、修改、删除Word批注Java 给Word指定字符串添加批注。下面将通过Java代码来演示如何读取批注。

    工具使用:Word类库(Free Spire.Doc for Java 免费版

    Jar文件获取:可通过官网下载,下载后解压文件,并将lib文件夹下的Spire.Doc.jar文件导入java程序;也可以通过Maven仓库安装导入,具体路径配置及导入方法可以参考教程

    测试文档如下:批注中包含文本和图片

     


    【示例1读取批注中的文本

    import com.spire.doc.*;
    import com.spire.doc.documents.Paragraph;
    import com.spire.doc.fields.Comment;
    import com.spire.doc.fields.TextRange;
    
    public class ReadComment {
        public static void main(String[] args) {
            //加载测试文档
            Document doc = new Document();
            doc.loadFromFile("sample.docx");
    
            //实例化String类型变量
            String text = "";
    
            //遍历所有批注
            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 paragraph = comment.getBody().getParagraphs().get(j);
                    //遍历段落中的对象
                    for (Object object : paragraph.getChildObjects()) {
                        //读取文本
                        if (object instanceof TextRange) {
                            TextRange textRange = (TextRange) object;
                            text = text + textRange.getText();
                        }
                    }
                }
            }
            //输入文本内容
            System.out.println(text);
        }
    }

    批注文本读取结果:

    【示例2读取批注中的图片

    import com.spire.doc.*;
    import com.spire.doc.documents.Paragraph;
    import com.spire.doc.fields.Comment;
    import com.spire.doc.fields.DocPicture;
    
    import javax.imageio.ImageIO;
    import java.awt.image.RenderedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    
    
    public class ExtractImgsInComment {
        public static void main(String[] args) throws IOException{
            //加载测试文档
            Document doc = new Document();
            doc.loadFromFile("sample.docx");
    
            //创建ArrayList数组对象
            ArrayList images = new ArrayList();
    
            //遍历所有批注
            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 paragraph = comment.getBody().getParagraphs().get(j);
                    //遍历段落中的对象
                    for (Object object : paragraph.getChildObjects()) {
                        //获取图片对象
                        if(object instanceof DocPicture){
                            DocPicture picture = (DocPicture) object;
                            images.add(picture.getImage());
                        }
                    }
                }
            }
            //提取图片,并指定图片格式
            for (int z = 0; z< images.size(); z++) {
                File file = new File(String.format("图片-%d.png", z));
                ImageIO.write((RenderedImage) images.get(z), "PNG", file);
            }
        }
    }

    批注图片读取结果:

    (本文完)

  • 相关阅读:
    Spring容器启动前传——web应用
    三方依赖bean初始化导致项目启动失败问题
    一个静态内部类单例引发的思考
    依赖传递
    kafka
    设置旋转元素的基点位置
    keep-alive 的 Props && 钩子函数
    css处理文字: 单行居中 多行居左
    localStorage 存 取 删
    for循环中暂停,async await
  • 原文地址:https://www.cnblogs.com/Yesi/p/11887877.html
Copyright © 2011-2022 走看看