欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 提取Word中的文本和图片

程序员文章站 2022-04-19 10:33:37
本文将介绍通过Java来提取或读取Word文档中文本和图片的方法。这里提取文本和图片包括同时提取文档正文当中以及页眉、页脚中的的文本和图片。 使用工具:Free Spire.Doc for Java (免费版) Jar文件导入方法(参考): 方法1:下载jar文件包。下载后解压文件,并将lib文件夹 ......

本文将介绍通过java来提取或读取word文档中文本和图片的方法。这里提取文本和图片包括同时提取文档正文当中以及页眉、页脚中的的文本和图片。

使用工具:free spire.doc for java (免费版)

jar文件导入方法(参考):

方法1下载jar文件包。下载后解压文件,并将lib文件夹下的spire.doc.jar文件导入到java程序。导入效果参考如下:

Java 提取Word中的文本和图片

方法2:可通过maven导入。参考

测试文档如下:

Java 提取Word中的文本和图片

 

java代码示例(供参考)

【示例1】提取word中的文本

import com.spire.doc.*;
import java.io.filewriter;
import java.io.ioexception;

public class extracttext {
    public static void main(string[] args) throws ioexception{
        //加载测试文档
        document doc = new document();
        doc.loadfromfile("test.docx");

        //获取文本保存为string
        string text = doc.gettext();

        //将string写入txt
        writestringtotxt(text,"提取文本.txt");
    }
    public static void writestringtotxt(string content, string txtfilename) throws ioexception {

        filewriter fwriter= new filewriter(txtfilename,true);
        try {
            fwriter.write(content);
        }catch(ioexception ex){
            ex.printstacktrace();
        }finally{
            try{
                fwriter.flush();
                fwriter.close();
            } catch (ioexception ex) {
                ex.printstacktrace();
            }
        }
    }
}

文本提取结果:

 Java 提取Word中的文本和图片

 

【示例2】提取word中的图片

import com.spire.doc.document;
import com.spire.doc.documents.documentobjecttype;
import com.spire.doc.fields.docpicture;
import com.spire.doc.interfaces.icompositeobject;
import com.spire.doc.interfaces.idocumentobject;
import javax.imageio.imageio;
import java.awt.image.renderedimage;
import java.io.file;
import java.io.ioexception;
import java.util.arraylist;
import java.util.linkedlist;
import java.util.list;
import java.util.queue;

public class extractimg {
    public static void main(string[] args) throws ioexception {
        //加载word文档
        document document = new document();
        document.loadfromfile("test.docx");

        //创建queue对象
        queue nodes = new linkedlist();
        nodes.add(document);

        //创建list对象
        list images = new arraylist();

        //遍历文档中的子对象
        while (nodes.size() > 0) {
            icompositeobject node = (icompositeobject) nodes.poll();
            for (int i = 0; i < node.getchildobjects().getcount(); i++) {
                idocumentobject child = node.getchildobjects().get(i);
                if (child instanceof icompositeobject) {
                    nodes.add((icompositeobject) child);

                    //获取图片并添加到list
                    if (child.getdocumentobjecttype() == documentobjecttype.picture) {
                        docpicture picture = (docpicture) child;
                        images.add(picture.getimage());
                    }
                }
            }
        }

        //将图片保存为png格式文件
        for (int i = 0; i < images.size(); i++) {
            file file = new file(string.format("图片-%d.png", i));
            imageio.write((renderedimage) images.get(i), "png", file);
        }

    }
}

图片提取结果:

 Java 提取Word中的文本和图片

 

 

(本文完)

 

转载请注明出处!