Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1613389
  • 博文数量: 95
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 941
  • 用 户 组: 普通用户
  • 注册时间: 2017-10-27 10:00
  • 认证徽章:
文章分类

全部博文(95)

文章存档

2019年(41)

2018年(45)

2017年(9)

我的朋友

分类: Java

2019-07-11 10:33:52

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

使用工具:Spire.Doc for Java

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

方法1:通过官网下载jar文件包。下载后解压文件,并将lib文件夹下的Spire.Doc.jar文件导入到java程序。
方法2:通过maven仓库安装到程序,可参考导入方法

测试文档如下:


Java代码示例(供参考)

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

  1. import com.spire.doc.*;
  2. import java.io.FileWriter;
  3. import java.io.IOException;

  4. public class ExtractText {
  5.     public static void main(String[] args) throws IOException{
  6.         //加载测试文档
  7.         Document doc = new Document();
  8.         doc.loadFromFile("test.docx");

  9.         //获取文本保存为String
  10.         String text = doc.getText();

  11.         //将String写入Txt
  12.         writeStringToTxt(text,"提取文本.txt");
  13.     }
  14.     public static void writeStringToTxt(String content, String txtFileName) throws IOException {

  15.         FileWriter fWriter= new FileWriter(txtFileName,true);
  16.         try {
  17.             fWriter.write(content);
  18.         }catch(IOException ex){
  19.             ex.printStackTrace();
  20.         }finally{
  21.             try{
  22.                 fWriter.flush();
  23.                 fWriter.close();
  24.             } catch (IOException ex) {
  25.                 ex.printStackTrace();
  26.             }
  27.         }
  28.     }
  29. }

文本提取结果:



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

  1. import com.spire.doc.Document;
  2. import com.spire.doc.documents.DocumentObjectType;
  3. import com.spire.doc.fields.DocPicture;
  4. import com.spire.doc.interfaces.ICompositeObject;
  5. import com.spire.doc.interfaces.IDocumentObject;
  6. import javax.imageio.ImageIO;
  7. import java.awt.image.RenderedImage;
  8. import java.io.File;
  9. import java.io.IOException;
  10. import java.util.ArrayList;
  11. import java.util.LinkedList;
  12. import java.util.List;
  13. import java.util.Queue;

  14. public class ExtractImg {
  15.     public static void main(String[] args) throws IOException {
  16.         //加载Word文档
  17.         Document document = new Document();
  18.         document.loadFromFile("test.docx");

  19.         //创建Queue对象
  20.         Queue nodes = new LinkedList();
  21.         nodes.add(document);

  22.         //创建List对象
  23.         List images = new ArrayList();

  24.         //遍历文档中的子对象
  25.         while (nodes.size() > 0) {
  26.             ICompositeObject node = (ICompositeObject) nodes.poll();
  27.             for (int i = 0; i < node.getChildObjects().getCount(); i++) {
  28.                 IDocumentObject child = node.getChildObjects().get(i);
  29.                 if (child instanceof ICompositeObject) {
  30.                     nodes.add((ICompositeObject) child);

  31.                     //获取图片并添加到List
  32.                     if (child.getDocumentObjectType() == DocumentObjectType.Picture) {
  33.                         DocPicture picture = (DocPicture) child;
  34.                         images.add(picture.getImage());
  35.                     }
  36.                 }
  37.             }
  38.         }

  39.         //将图片保存为PNG格式文件
  40.         for (int i = 0; i < images.size(); i++) {
  41.             File file = new File(String.format("图片-%d.png", i));
  42.             ImageIO.write((RenderedImage) images.get(i), "PNG", file);
  43.         }

  44.     }
  45. }

图片提取结果:



(本文完)

阅读(169) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册