Java使用POI将doc文档转为Html

  • 前提
  • 几个使用到的类
    • 几个方法的理解
    • converter.setPicturesManager(xxxx)
    • converter.processDocument(hwpfDocument);
    • 外观模式
  • 具体实现
  • 结果
    • 测试
    • 生成结果
      • Word内容
      • 生成的目录以及结果
      • Html
  • 参考资料

前提

关于依赖什么的请看上一篇文章:docx转Html

几个使用到的类

HWPFDocument :代表了一个doc文件对象
WordToHtmlConverter :看名字就知道了用于Word转Html的类
Document : 表示一个完整的Html或者XML文档对象
DOMSource : 源树
StreamResult : 转换结果的持有者
Transformer :转换器用于将源树转为结果树

吐槽一下POI类的注释,是真的少,还好命名都规范源码还是能看个大概 = =

几个方法的理解

converter.setPicturesManager(xxxx)

这个用的是匿名内部类

converter.processDocument(hwpfDocument);

就是一个简单的塞值,将hwpfDocument内容属性塞到转换器内部的HtmlDocumentFacade中

外观模式

外观模式,这个一句话说不清楚,我就放在最下面了链接里了。上面的HtmlDocumentFacade就是使用了外观模式。

具体实现

因为该方法作用和之前提到的类似,所以其中的工具类的方法大家去上一篇自取即可:docx转Html

    /** @description 将doc文档转为html* @author 三文鱼* @date 9:16 2022/4/29* @param filePath* @param htmlPath* @return void**/public static void docToHtml(String filePath , String htmlPath) throws Exception {//获取文件名称String myFileName = getFileNameInfo(filePath , 0);//该doc文件转换后所有文件存放的目录String docRootPath = htmlPath + File.separator + myFileName + getDataTime() + File.separator;String imagePath = docRootPath  + "image" + File.separator;//转换的html文件路径 与图片在同目录中String fileOutName = docRootPath + myFileName + ".html";//创建图片文件的存储目录new File(imagePath).mkdirs();//poi中doc文档对应的实体类HWPFDocument hwpfDocument = new HWPFDocument(new FileInputStream(filePath));//使用空的文档对象构建一个转换对象WordToHtmlConverter converter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());//设置存储图片的管理者--使用匿名内部类实现 该类实现了PicturesManager接口,实现了其中的savePicture方法converter.setPicturesManager(new PicturesManager() {FileOutputStream out = null;//在下面的processDocument方法内部会调用该方法 用于存储word中的图片文件@Overridepublic String savePicture(byte[] bytes, PictureType pictureType, String name, float width, float height) {try {//单个照片的保存out = new FileOutputStream(imagePath + name);out.write(bytes);} catch (IOException exception) {exception.printStackTrace();}finally {if(out != null) {try {out.close();} catch (IOException e) {e.printStackTrace();}}}//这里要返回给操作者(HtmlDocumentFacade)一个存储的路径 用于生成Html时定位到图片资源return imagePath + name;}});//使用外观模式,将hwpfDocument文档对象设置给HtmlDocumentFacade中的Document属性converter.processDocument(hwpfDocument);//获取转换器中的document文档Document htmlDocument = converter.getDocument();//充当文档对象模型 (DOM) 树形式的转换源树的持有者  -- 源树DOMSource domSource = new DOMSource(htmlDocument);//转换器 该对象用于将源树转换为结果树Transformer transformer = TransformerFactory.newInstance().newTransformer();//设置输出时的以什么方式输出,也可说是结果树的文件类型 可以是html/xml/text或者是一些扩展前三者的扩展类型transformer.setOutputProperty(OutputKeys.METHOD , "html");//设置一些必要的属性 设置输出时候的编码为utf-8transformer.setOutputProperty(OutputKeys.ENCODING , "utf-8");//转换 将输入的源树转换为结果树并且输出到streamResult中transformer.transform(domSource , new StreamResult(new File(fileOutName));}

结果

测试

测试的话就跟之前的代码一样了

public class DocTest {public static void main(String[] args) {String filePath = "F:\\学习记录\\测试数据\\word\\doc\\test.doc";String htmlPath = "F:\\学习记录\\测试数据\\word\\html";try {MyDocUtil.docToHtml(filePath, htmlPath);}catch (Exception exception) {exception.printStackTrace();}}
}

生成结果

Word内容

生成的目录以及结果


Html

参考资料

DOM树:DOM树的组成.
POI官方文档:POI官方文档.
JDK的API文档: Java的API文档.
外观模式:外观模式
word与html互转:word与Html互转.

Java使用POI将doc文档转为Html相关推荐

  1. java利用POI替换word文档中的标签

    java利用POI替换word文档中的标签 <dependency><groupId>org.apache.poi</groupId><artifactId& ...

  2. java用poi导出word,Java使用POI导出Word文档的操作教程,poiword

    Java使用POI导出Word文档的操作教程,poiword 一.主要pom依赖 org.apache.poi poi-ooxml 3.16 二.需要导出word模板 三.相关导出代码 package ...

  3. java生成自己的Doc文档

    java生成自己的Doc文档 第一种通过命令行来生成 简要代码如下: package com.can.www;/*** @author liu* @version 1.0* @since 1.8*/ ...

  4. 利用mammoth.js将doc文档转为html

    在项目中遇到一个需求:需要将doc文档转为html格式: 最终觉得mammoth.js是非常好用的一个插件.但是目前仅支持本地资源,网络地址不能识别. <!DOCTYPE html> &l ...

  5. [实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能)

    [实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能) 基于Apache POI对Word进行操作 一.基于Apache POI封装的word文档工具V1. ...

  6. JAVA 利用poi EXCLE模板文档导出数据

    JAVA 利用poi EXCLE模板文档导出数据 1.导入jar包 下载地址:添加链接描述 提取码:xqkg 2.EXCLE模板 3.代码示例 package utill;import java.io ...

  7. java doc转换docx_JAVA - 将doc文档转为docx文档

    因为项目需要解析文档,而且 doc 文档还不少,全网能找到的靠谱的解析doc甚至是将doc转txt的方案实际上不多.这个是部分文件统计 .Net 和 java 有一个收费的解决方案,但是我确实没钱sp ...

  8. java用poi导出wrod文档支持图片并解释代码

    使用POI(Poor Obfuscation Implementation,即弱混淆实现)库可以很方便地在Java代码中导出Word文档,同时还支持插入图片. 下面是一个简单的例子,它创建了一个包含一 ...

  9. Java实战—POI操作Excel文档、读取、写入、合并单元格

    一.POI项目简介 POI全称 Poor Obfuscation Implementation,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:http: ...

最新文章

  1. 监控摄像头cad图例_一套实用的智能化弱电系统大样图,可以作为弱电项目CAD设计素材...
  2. Java Persistence API:快速入门
  3. Linux 字符设备驱动开发基础(一)—— 编写简单 LED 设备驱动
  4. mysql csv存储引擎_2.2 mysql存储-CSV存储引擎
  5. BGP十三条选路原则
  6. windows bat脚本 理解 @echo off 和 echo off 的区别
  7. Python爬虫:通过Selenium库学习如何爬取京东畅销排行榜书籍
  8. 「解读苏宁」30年门店数字化发展心法与实践分享
  9. cisco思科交换机的基本使用
  10. HTML5 实例:旋转同时放大缩小的方块(canvas)
  11. 编写代码的「八荣八耻」(上篇)
  12. 2 MyBatis Sql映射文件
  13. 记——博客后台管理系统
  14. 强化学习gym的使用之mountaincar的训练
  15. LeetCode.黑白方格画
  16. 仿小米商城官网首页模板(HTML+CSS)
  17. python 选择排序 快速排序
  18. html给页面整体添加左右边距_打印html页面时的边距
  19. 每日一题(day5)
  20. 如何从服务器复制cadence库文件到windows,cadence使用笔记

热门文章

  1. 一个FC游戏的下载站点
  2. java常见正则表达式用法
  3. Xposed 模块开发入门
  4. 微信网页授权获取用户昵称中文乱码
  5. 公司搬迁后第一次到新公司上班
  6. 大学计算机实验报告答案 南京理工大学,南京理工大学微机实验报告
  7. java 同时返回两个参数,如何在java中返回两个参数
  8. Twitter与微博
  9. PS轻松制作四种扁平化风格图标
  10. 小丑改造计划之动态规划