Java使用poi将word转换为html

发布时间 - 2026-01-10 22:14:03    点击率:

使用poi将word转换为html,支持doc,docx,转换后可以保持图片、样式。

1.导入Maven包

<dependency> 
 <groupId>org.apache.poi</groupId> 
 <artifactId>poi</artifactId> 
 <version>3.14</version> 
</dependency> 
<dependency> 
 <groupId>org.apache.poi</groupId> 
 <artifactId>poi-scratchpad</artifactId> 
 <version>3.14</version> 
</dependency> 
<dependency> 
 <groupId>org.apache.poi</groupId> 
 <artifactId>poi-ooxml</artifactId> 
 <version>3.14</version> 
</dependency> 
<dependency> 
 <groupId>fr.opensagres.xdocreport</groupId> 
 <artifactId>xdocreport</artifactId> 
 <version>1.0.6</version> 
</dependency> 
<dependency> 
 <groupId>org.apache.poi</groupId> 
 <artifactId>poi-ooxml-schemas</artifactId> 
 <version>3.14</version> 
</dependency> 
<dependency> 
 <groupId>org.apache.poi</groupId> 
 <artifactId>ooxml-schemas</artifactId> 
 <version>1.3</version> 
</dependency> 

2.转换代码

import org.apache.poi.hwpf.HWPFDocument; 
import org.apache.poi.hwpf.converter.WordToHtmlConverter; 
import org.apache.poi.xwpf.converter.core.BasicURIResolver; 
import org.apache.poi.xwpf.converter.core.FileImageExtractor; 
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.w3c.dom.Document; 
 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.transform.OutputKeys; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.OutputStreamWriter; 
 
public class Test { 
  // doc转换为html 
  void docToHtml() throws Exception { 
    String sourceFileName = "C:\\doc\\test.doc"; 
    String targetFileName = "C:\\html\\test.html"; 
    String imagePathStr = "C:\\html\\image\\"; 
    HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(sourceFileName)); 
    Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); 
    WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(document); 
    // 保存图片,并返回图片的相对路径 
    wordToHtmlConverter.setPicturesManager((content, pictureType, name, width, height) -> { 
      try(FileOutputStream out = new FileOutputStream(imagePathStr + name)){ 
         out.write(content); 
      } catch (Exception e) { 
        e.printStackTrace(); 
      }  
      return "image/" + name; 
    }); 
    wordToHtmlConverter.processDocument(wordDocument); 
    Document htmlDocument = wordToHtmlConverter.getDocument(); 
    DOMSource domSource = new DOMSource(htmlDocument); 
    StreamResult streamResult = new StreamResult(new File(targetFileName)); 
 
    TransformerFactory tf = TransformerFactory.newInstance(); 
    Transformer serializer = tf.newTransformer(); 
    serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); 
    serializer.setOutputProperty(OutputKeys.INDENT, "yes"); 
    serializer.setOutputProperty(OutputKeys.METHOD, "html"); 
    serializer.transform(domSource, streamResult); 
  } 
  // docx转换为html 
  public void docxToHtml() throws Exception { 
    String sourceFileName = "D:\\ac\\00.docx"; 
    String targetFileName = "D:\\ac\\test.html"; 
    String imagePathStr = "D:\\ac\\image\\"; 
    OutputStreamWriter outputStreamWriter = null; 
    try { 
      XWPFDocument document = new XWPFDocument(new FileInputStream(sourceFileName)); 
      XHTMLOptions options = XHTMLOptions.create(); 
      // 存放图片的文件夹 
      options.setExtractor(new FileImageExtractor(new File(imagePathStr))); 
      // html中图片的路径 
      options.URIResolver(new BasicURIResolver("image")); 
      outputStreamWriter = new OutputStreamWriter(new FileOutputStream(targetFileName), "utf-8"); 
      XHTMLConverter xhtmlConverter = (XHTMLConverter) XHTMLConverter.getInstance(); 
      xhtmlConverter.convert(document, outputStreamWriter, options); 
    } finally { 
      if (outputStreamWriter != null) { 
        outputStreamWriter.close(); 
      } 
    } 
  } 

演示地址: https://www.xiaoyun.studio/app/preview.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# poi将word转换为html  # java  # word转换为html  # Java使用poi-tl1.9.1生成Word文档的技巧分享  # java 使用POI合并两个word文档  # java实现在线预览--poi实现word、excel、ppt转html的方法  # java poi设置生成的word的图片为上下型环绕以及其位置的实现  # 利用Java Apache POI 生成Word文档示例代码  # java Apache poi 对word doc文件进行读写操作  # Java中使用Apache POI读取word文件简单示例  # java使用poi读取ppt文件和poi读取excel、word示例  # java通过poi解析word入门的操作方法  # 转换为  # 大家多多  # XHTMLOptions  # FileImageExtractor  # XHTMLConverter  # usermodel  # dom  # w3c  # XWPFDocument  # BasicURIResolver  # HWPFDocument  # hwpf  # import  # converter  # core  # xwpf  # WordToHtmlConverter  # stream  # DOMSource  # TransformerFactory 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  JS去除重复并统计数量的实现方法  魔方云NAT建站如何实现端口转发?  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  如何做网站制作流程,*游戏网站怎么搭建?  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel如何自定义分页视图?(Pagination示例)  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  网页设计与网站制作内容,怎样注册网站?  java ZXing生成二维码及条码实例分享  如何用PHP快速搭建高效网站?分步指南  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  香港服务器选型指南:免备案配置与高效建站方案解析  如何用JavaScript实现文本编辑器_光标和选区怎么处理  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Laravel如何使用Vite进行前端资源打包?(配置示例)  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  如何快速生成ASP一键建站模板并优化安全性?  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  黑客如何通过漏洞一步步攻陷网站服务器?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  zabbix利用python脚本发送报警邮件的方法  电商网站制作价格怎么算,网上拍卖流程以及规则?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何基于PHP生成高效IDC网络公司建站源码?  如何快速辨别茅台真假?关键步骤解析  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  香港服务器租用每月最低只需15元?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  香港服务器部署网站为何提示未备案?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  PHP 500报错的快速解决方法  如何在阿里云部署织梦网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  微信小程序 canvas开发实例及注意事项  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  如何在云指建站中生成FTP站点?