poi提取docx中的文字和图片

摘要:
packagecom.fry.poiDemo.dao;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.PrintStream;importjava.util.List;importorg.apache.poi
package com.fry.poiDemo.dao;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.List;

import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;

public class Word {
    // maven太好用了
    // 读取srcFile源word文件docx文字
    // 读取srcFile源word文件docx中的image图片并且存放在文件夹imageFile中
    public String readDocxImage(String srcFile, String imageFile) {
        String path = srcFile;
        File file = new File(path);
        try {
            // 用XWPFWordExtractor来获取文字
            FileInputStream fis = new FileInputStream(file);
            XWPFDocument document = new XWPFDocument(fis);
            XWPFWordExtractor xwpfWordExtractor = new XWPFWordExtractor(document);
            String text = xwpfWordExtractor.getText();
//            System.out.println(text);
            //将获取到的文字存放到对应文件名中的txt文件中
            String temp[]=srcFile.split("\/");
            String temp1=temp[temp.length-1];
            String temp3[]=temp1.split("\.");
            String txtFileName="myRes//txt//"+temp3[0]+".txt";
            PrintStream ps = new PrintStream(txtFileName);
            ps.println(text);
            

            // 用XWPFDocument的getAllPictures来获取所有的图片
            List<XWPFPictureData> picList = document.getAllPictures();
            for (XWPFPictureData pic : picList) {
//                System.out.println(pic.getPictureType() + file.separator + pic.suggestFileExtension() + file.separator
//                        + pic.getFileName());
                byte[] bytev = pic.getData();
//                System.out.println(bytev.length);
                // 大于1000bites的图片我们才弄下来,消除word中莫名的小图片的影响
                if (bytev.length > 300) {
                    FileOutputStream fos = new FileOutputStream(imageFile + pic.getFileName());
                    fos.write(bytev);
                }
            }
            fis.close();
            return text;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

免责声明:文章转载自《poi提取docx中的文字和图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇metrics-server 安装和报错 Kubernetes metrics-server: kubectl top nodes Error from server (ServiceUnavailable)Python 并发编程(一)之线程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

chromedriver的使用

1.调用chrome driver System.setProperty("webdriver.chrome.driver", "C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe"); 2.创建chromeOption对象 ChromeOptions chromeOptio...

提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

       复制、移动、删除、比较、监控、文件读写 等文件和IO操作是编程中比较常用的功能。        幸运的是,Apache Commons IO等开源组件已经帮我们实现了。        我们可以不用重复造轮子了。 1.资料地址 1.1官方网站:http://commons.apache.org/proper/commons-io/ 1.2下...

组合or继承

面向对象设计有一个原则“优先使用对象组合,而不是继承”。 下面是两者优缺点的比较: 组 合 关 系 继 承 关 系 优点:不破坏封装,整体类与局部类之间松耦合,彼此相对独立 缺点:破坏封装,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺乏独立性 优点:具有较好的可扩展性 缺点:支持扩展,但是往往以增加系统结构的复杂度为代价 优点:支持...

Rxjava学习(二操作符)

操作符是为了解决对Observable对象的变换的问题,操作符用于在Observable和最终的Subscriber之间修改Observable发出的事件 1.filter   filter()操作符是可以对Observable流程的数据进行一层过滤处理,返回一个新的Observable,filter()返回为false的值将不会发出到Subscriber...

java 关于JDBC和DAO模式使用

JDBC(全称:Java Data Base Connectivity)是java数据库连接简称 ,提供连接各种数据库的能力 JDBC API主要的功能: 与数据库建立连接 执行SQL语句 处理结果 JDBC关键字的使用: DriverManager:依据数据库的不同,管理JDBC驱动 Connection:负责连接数据库并且担任传送数据库的任务 S...

Android随笔之——用shell脚本模拟用户按键、触摸操作

  之前写过两篇关于Android中模拟用户操作的博客(其实用一篇是转载的),现在就来讲讲用shell脚本来模拟用户按键操作。本次的目标是用shell脚本打开微信并在其搜索框中搜索相关内容。   本文的模拟功能主要是用adb的input命令来实现,如果你adb的环境变量配置正确的话,在cmd中输入 adb shell input 就可以看见input的用法...