美文网首页poi
使用xdocreport实现word转html

使用xdocreport实现word转html

作者: 任未然 | 来源:发表于2022-04-06 15:25 被阅读0次

    一. 概述

    现在企业系统很多都有在线编辑的需求, 很多都是采用富文本方案解决(因为免费且简单), 但企业很多文件都是word文档编写的, 让他们重新在富文本写一遍加上格式调整,这是非常大的工作量. 这时候就会提出word文档导入了, 因为富文本是html格式的, 所以word导入就要转html. 查阅了网上很多开源的解决方案, 但基本都没有能把格式转换的很完美的, 最后选了xdocreport, XDocReport是开源框架中转换格式比较好的, 建议word文档格式用.docx

    二. 使用

    2.1 引入依赖

            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId>
                <version>2.0.2</version>
            </dependency>
    

    注意: fr.opensagres.poi.xwpf.converter.xhtml已经包含org.apache.poi, 如果转换报错,可能是你单独引入的poi包版本过低, 请升级到4.0.1以上

    2.2 docx转html

    import fr.opensagres.poi.xwpf.converter.core.ImageManager;
    import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLConverter;
    import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLOptions;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.junit.Test;
    
    import java.io.*;
    
    public class WordToHtml {
    
    
        /**
         * 将Word2007+转成Html
         * 
         * @throws Exception
         */
        @Test
        public void word2007ToHtml() throws Exception {
            File file = new File("~/123.docx");
            /* 判断是否为docx文件 */
            if (file.getName().endsWith(".docx") || file.getName().endsWith(".DOCX")) {
                // 1) 加载docx文档生成 XWPFDocument 对象
                XWPFDocument document = new XWPFDocument(new FileInputStream(file));
                // 2) 设置装换参数
                XHTMLOptions xhtmlOptions = XHTMLOptions.create();
                
                // 设置图片管理器,把图片上传到服务器
                xhtmlOptions.setImageManager(new ImageManager(new File(""),""){
                    // 图片访问路径
                    private String imageUrl;
    
                    @Override
                    public void extract(String imagePath, byte[] imageData) throws IOException {
                        // 上传文件,设置图片url.  imageData:图片数据
                        imageUrl = "http://hello_world/demo.png";
                    }
    
                    @Override
                    public String resolve(String uri) {
                        // 返回图片访问路径
                        return imageUrl;
                    }
                });
    
                // 转html输出
                OutputStream out = new FileOutputStream("~/123.html");
                XHTMLConverter.getInstance().convert(document, out, xhtmlOptions);
            } else {
                System.out.println("Enter only as MS Office 2007+ files");
            }
            System.out.println("转换结束");
        }
    }
    

    相关文章

      网友评论

        本文标题:使用xdocreport实现word转html

        本文链接:https://www.haomeiwen.com/subject/xgirsrtx.html