java word文档 转 html文件

用java将word转为html文档

  • 1、简介
  • 2、添加依赖
  • 3、代码示例

1、简介

最近,因项目需要,需要对word文档进行解析拆分,感觉直接解析word有点麻烦,于是想到,先将word转为html文档,然后用jsoup解析html文件更方便,jsoup的使用可以参考相关API,操作简单,类似javascript。
word转html文档方法如下:

一般word文件后缀有doc、docx两种。docx是office word 2007以及以后版本文档的扩展名;doc是office word 2003文档保存的扩展名。对于这两种格式的word转换成html需要使用不同的方法。

2、添加依赖

<dependency><groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.xdocreport.document</artifactId><version>1.0.5</version>
</dependency>
<dependency>  <groupId>fr.opensagres.xdocreport</groupId>  <artifactId>org.apache.poi.xwpf.converter.xhtml</artifactId>  <version>1.0.5</version>  
</dependency>

对于docx格式的文档使用poi进行转换。依赖如下:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.12</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.12</version>
</dependency>

3、代码示例

package com.test.word;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.PicturesManager;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.usermodel.PictureType;
import org.apache.poi.xwpf.converter.core.FileImageExtractor;
import org.apache.poi.xwpf.converter.core.FileURIResolver;
import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;
import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.junit.Test;
import org.w3c.dom.Document;/*** word 转换成html*/
public class WordToHtml {/*** 2007版本word转换成html* @throws IOException*/@Testpublic void Word2007ToHtml() throws IOException {String filepath = "C:/test/";String fileName = "滕王阁序2007.docx";String htmlName = "滕王阁序2007.html";final String file = filepath + fileName;File f = new File(file);if (!f.exists()) {System.out.println("Sorry File does not Exists!");} else {if (f.getName().endsWith(".docx") || f.getName().endsWith(".DOCX")) {// 1) 加载word文档生成 XWPFDocument对象InputStream in = new FileInputStream(f);XWPFDocument document = new XWPFDocument(in);// 2) 解析 XHTML配置 (这里设置IURIResolver来设置图片存放的目录)File imageFolderFile = new File(filepath);XHTMLOptions options = XHTMLOptions.create().URIResolver(new FileURIResolver(imageFolderFile));options.setExtractor(new FileImageExtractor(imageFolderFile));options.setIgnoreStylesIfUnused(false);options.setFragment(true);// 3) 将 XWPFDocument转换成XHTMLOutputStream out = new FileOutputStream(new File(filepath + htmlName));XHTMLConverter.getInstance().convert(document, out, options);//也可以使用字符数组流获取解析的内容
//                ByteArrayOutputStream baos = new ByteArrayOutputStream();
//                XHTMLConverter.getInstance().convert(document, baos, options);
//                String content = baos.toString();
//                System.out.println(content);
//                 baos.close();} else {System.out.println("Enter only MS Office 2007+ files");}}}/*** /*** 2003版本word转换成html* @throws IOException* @throws TransformerException* @throws ParserConfigurationException*/@Testpublic void Word2003ToHtml() throws IOException, TransformerException, ParserConfigurationException {String filepath = "C:/test/";final String imagepath = "C:/test/image/";String fileName = "滕王阁序2003.doc";String htmlName = "滕王阁序2003.html";final String file = filepath + fileName;InputStream input = new FileInputStream(new File(file));HWPFDocument wordDocument = new HWPFDocument(input);WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());//设置图片存放的位置wordToHtmlConverter.setPicturesManager(new PicturesManager() {public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) {File imgPath = new File(imagepath);if(!imgPath.exists()){//图片目录不存在则创建imgPath.mkdirs();}File file = new File(imagepath + suggestedName);try {OutputStream os = new FileOutputStream(file);os.write(content);os.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return imagepath + suggestedName;}});//解析word文档wordToHtmlConverter.processDocument(wordDocument);Document htmlDocument = wordToHtmlConverter.getDocument();File htmlFile = new File(filepath + htmlName);OutputStream outStream = new FileOutputStream(htmlFile);//也可以使用字符数组流获取解析的内容
//        ByteArrayOutputStream baos = new ByteArrayOutputStream();
//        OutputStream outStream = new BufferedOutputStream(baos);DOMSource domSource = new DOMSource(htmlDocument);StreamResult streamResult = new StreamResult(outStream);TransformerFactory factory = TransformerFactory.newInstance();Transformer serializer = factory.newTransformer();serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");serializer.setOutputProperty(OutputKeys.INDENT, "yes");serializer.setOutputProperty(OutputKeys.METHOD, "html");serializer.transform(domSource, streamResult);//也可以使用字符数组流获取解析的内容
//        String content = baos.toString();
//        System.out.println(content);
//        baos.close();outStream.close();}
}

运行结果:
在这里插入图片描述
在这里插入图片描述
原文参考:https://www.cnblogs.com/always-online/p/4800131.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109491.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

港联证券:基本面分析的基本知识?

作为一种股票投资剖析办法&#xff0c;根本面剖析是用来研究一家公司在剖析期内的运营状况的一种办法&#xff0c;它重视公司的财政数据、盈余才能、市场占有率以及宏观经济要素等方面&#xff0c;为投资者供给了一个深化了解公司价值的方法。下面&#xff0c;本文将从多个视点…

Jprofiler的使用查看oom

一、安装 idea安装插件 安装客户端 链接 IDEA配置Jprofiler执行文件 二、产生oom import java.util.ArrayList; import java.util.List;//测试代码 public class TestHeap {public static void main(String[] args) {int num 0;List<Heap> list new ArrayList&l…

读高性能MySQL(第4版)笔记05_优化服务器设置

1. 除非遇到异常情况&#xff0c;否则不需要调整配置 1.1. 不要“调优”服务器&#xff0c;不要使用比率、公式或“调优脚本”作为设置配置变量的基础 1.1.1. 在互联网上搜索配置建议并不总是一个好主意&#xff0c;你会在博客、论坛等找到很多糟糕的建议 1.1.2. 很难判断谁…

【案例】光电兼修的Alpha Cen,如何应对上升期的甜蜜烦恼?

Alpha Cen&#xff08;比邻星光&#xff09;是一家挺酷的公司&#xff0c;专注于超表面技术芯片研发。 所谓超表面芯片&#xff0c;就是通过控制类似下图的一个个独立纳米级别单元实现光操控。用微纳光学超表面技术能够平面化集成唯一还不在wafer上的光学器件&#xff0c;这意…

设置HTTP代理隧道

在网络世界中&#xff0c;使用HTTP代理IP可以帮助我们实现一些有趣的功能&#xff0c;比如突破网络封锁、访问被限制的内容、隐藏真实IP等。现在&#xff0c;我将为你详细介绍如何设置HTTP代理服务器&#xff0c;让你轻松掌握这项技能&#xff01; 步骤一&#xff1a;了解HTTP…

虚拟机备份

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

学习Bootstrap 5的第十二天

目录 轮播 轮播所使用的类说明 创建轮播 实例 轮播图片上添加描述 实例 模态框 如何创建模态框 实例 模态框尺寸 全屏模态 实例一 实例二 模态框居中显示 实例 模态框滚动条 实例 轮播 轮播所使用的类说明 类描述.carousel创建轮播。.carousel-indicators为…

Deformable Convolution 可变形卷积

论文&#xff1a;https://openaccess.thecvf.com/content_ICCV_2017/papers/Dai_Deformable_Convolutional_Networks_ICCV_2017_paper.pdf 代码&#xff1a;https://github.com/4uiiurz1/pytorch-deform-conv-v2/blob/master/deform_conv_v2.py 参考博文&#xff1a;可变形卷…

打造“共富果园” 广东乳源推动茶油全产业链高质量发展

新华网广州9月13日电&#xff08;李庆招&#xff09;金秋九月&#xff0c;瓜果飘香&#xff0c;油茶也将迎来采摘期。13日&#xff0c;一场以“中国健康油 茶油新势力”为主题的乳源茶油12221市场体系之产业大会暨供销对接会在广州举行。来自茶油行业的专家、企业家齐聚一堂&am…

C# Onnx Yolov8 Fire Detect 火焰识别,火灾检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime.Tensors; using Microsoft.ML.OnnxRuntime; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Syste…

Java笔记:Java线程Dump分析

1 Thread Dump介绍 1.1 什么是Thread Dump Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力&#xff0c;虽然各个 Java虚拟机打印的thread dump略有不同&#xff0c;但是 大多都提供了当前活动线程的快…

展会动态 | 迪捷软件邀您参加2023世界智能网联汽车大会

*9月18日之前注册的观众免收门票费* 由北京市人民政府、工业和信息化部、公安部、交通运输部和中国科学技术协会联合主办的2023世界智能网联汽车大会将于9月21日-24日在北京中国国际展览中心&#xff08;顺义馆&#xff09;举行。 论坛背景 本届展会以“聚智成势 协同向新——…