这里就不对POI做过多的说明了,贴个官网 https://poi.apache.org/,随意看看。
首先搞清楚下要将doc/docx文档转成html/htm的话要怎么处理,根据POI的文档,我们可以知道,处理doc 格式文件对应的 POI API 为 HWPF、docx 格式为 XWPF。此处参考下这篇好文:http://www.open-open.com/lib/view/open1389594797523.html 在格式转换上说得很清楚。
所以整体就是:根据文档类型,doc我们用HWPF对象处理转换、docx用XWPF对象处理转换。
一、处理doc。
这个相对简单,网上一查一堆,我的代码也是根据网上的做下自己的优化和逻辑。
因为POI很早前就可以支持doc的处理,所以资料比较多。
思路就是:HWPFDocument对象实例化文件流 -> WordToHtmlConverter对象处理HWPFDocument对象及预处理页面的图片等(主要是图片)
文档说明是:
Converts Word files (95-2007) into HTML files.
This implementation doesn't create images or links to them. This can be changed by overriding AbstractWordConverter.processImage(Element, boolean, Picture) method.
-> org.w3c.dom.Document对象处理WordToHtmlConverter,生成DOM对象 -> 输出文件。
这里有个好处就是使用到了Document对象,从而解决了编码、文件格式等问题。
这里因为过程简单,直接贴简单demo,看注释即可:
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
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.DOMSourc