本文将介绍通过 Java 来提取或读取 Word 文档中文本和图片的方法. 这里提取文本和图片包括同时提取文档正文当中以及页眉, 页脚中的的文本和图片.
使用工具: FreeSpire.Doc for Java (免费版)
Jar 文件导入方法 (参考):
方法 1: 下载 jar 文件包. 下载后解压文件, 并将 lib 文件夹下的 Spire.Doc.jar 文件导入到 java 程序. 导入效果参考如下:
方法 2: 可通过 maven 导入. 参考导入方法.
测试文档如下:
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();
- }
- }
- }
- }
文本提取结果:
[示例 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); } } }
图片提取结果:
(本文完)
来源: https://www.cnblogs.com/Yesi/p/11611888.html