word转Html的实现方案

相信有些小伙伴会遇到这样的场景,那就是想要在前端网页上面预览word文件,但是直接预览word文件相对来说还是体验不是很好,再加上如果还想直接在文件上面做一些编辑改变的话,一般前端的富文本编辑器编辑的都是Html文件。所以这个时候我们可以考虑将word转成Html,之后预览和编辑都变得非常简单。之后还需要将文件转成pdf之类的文件也非常方便。
话不多说,下面给大家分享个非常简单好用的方案,并且下面会给出个实际实现的案例。
我们借助的是poi工具,它的功能非常强大,贴出他的github地址:https://github.com/apache/poi,如果想获取更多信息可以去看看。
我这边用到的相关工具引入:
 

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId>
            <version>2.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>ooxml-schemas</artifactId>
            <version>1.3</version>
        </dependency>

现在我们遇到的word文件有两种,一种是以docx文件结尾的,另一种是doc文件结尾的。两种文件在内部编码是有一些差异的,doc是03版本或更早,docx只有07版之后才有的格式。

当然它们转Html的方法也稍有不同,下面分别给出demo,两个方案的测试数据也有不同,各位根据自己的需要调整就行。

public static String docToHtml() throws Exception {
        HWPFDocument hwpfDocument = new HWPFDocument(new FileInputStream("E:\\****.doc"));
        Document newDocument = XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument();
        WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(newDocument);
        wordToHtmlConverter.processDocument(hwpfDocument);
        Transformer transformer = TransformerFactory.newInstance()
                .newTransformer();
        //指定Transformer在输出结果树时是否可以添加额外的空格
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        //指定输出编码
        transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
        transformer.setOutputProperty(OutputKeys.METHOD, "html");
        //这里是希望将转换后的流最终输出到字符串进行返回, 如果你希望直接输出文件, 你可以创建一个文件流放进下面的参数
        StringWriter stringWriter = new StringWriter();
        transformer.transform(new DOMSource(wordToHtmlConverter.getDocument()), new StreamResult(stringWriter));
        String html = stringWriter.toString();
        return html;
    }
private static String docxToHtml(byte[] fileType) throws IOException {
        XWPFDocument document = new XWPFDocument(new ByteArrayInputStream(fileType));
        StringWriter stringWriter = new StringWriter();
        XHTMLConverter xhtmlConverter = (XHTMLConverter) XHTMLConverter.getInstance();
        XHTMLOptions options = XHTMLOptions.getDefault();
        xhtmlConverter.convert(document, stringWriter,options);
        String html = new String (stringWriter.toString().getBytes("utf-8"),"utf-8");
        return html;
 }

转换成html就可以快乐地使用啦~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值