java使用aspose.word工具,HTML生成并下载Word文档

一.aspose.word工具有着强大的功能

1、能够把HTML中的图片提取并插入Word文档中

2、比较完好的保留了HTML的中格式。

3、可以加载css样式,保留html原有的ccs样式

4、当前工具是商业软件,收费软件

代码:

注意:1、主要的方法都来源于apache提供的方法    

           2、使用临时文件目的,不想保留生成的Word文档(可以根据各自的需求,做相关处理)

          3、使用aspose.word的jar:aspose-words-14.9.0-jdk16

 //拼接完整的HTML文档
    String html="<!DOCTYPE html><html><head></head><body><h2 style=\"text-align: center;\">"+title+"</h2>" + body + "</body></html>";
    //Word文档输出流
    OutputStream outputStream1=null;
    //下载输出流
    OutputStream outputStream=null;
    //下载输入流
    InputStream inputStream=null;
    try {

        //创建临时文件
        File htmlFile = File.createTempFile(articleId, ".doc");

        //aspose-words生成Word文档
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        builder.insertHtml(html);
        outputStream1=new FileOutputStream(htmlFile);
        doc.save(outputStream1, SaveOptions.createSaveOptions(SaveFormat.DOC));//生成doc文件
        //生成Word文档之后,关闭输入流
        outputStream1.close();

        //文件下载
        response.reset();
        response.setContentType("application/msword");
        response.setCharacterEncoding("UTF-8");
        fileName=new String(fileName.getBytes("UTF-8"));
        response.addHeader("Content-Disposition","attachment;filename=\""+fileName+"\"");
        outputStream=response.getOutputStream();

        //输出文件
        inputStream=new FileInputStream(htmlFile);
        IOUtils.copy(inputStream,outputStream);
        //关闭流
        IOUtils.closeQuietly(inputStream);
        IOUtils.closeQuietly(outputStream);
        //关闭程序时,删除临时文件
        htmlFile.delete();
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        //关闭所有的流
        try {
            if (outputStream1!=null){
                outputStream1.close();
            } 
            if (outputStream!=null){
                outputStream.close();
            }
            if (inputStream!=null){
                inputStream.close();
            }
        }catch (IOException e1){
            e1.printStackTrace();
        }
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值