栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

freemarker导出word,包含富文本内容

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

freemarker导出word,包含富文本内容

maven依赖

    org.springframework.boot
    spring-boot-starter-freemarker


    org.jsoup
    jsoup
    1.8.3

word模板创建

创建word文档,将需要替换的内容用${XXX}替换。将文档另存为mht文件(mht文件支持html标签,而xml文件不支持),再另存为ftl文件。修改编码为UTF-8,去除{}内多余的标签代码

工具类

RichHtmlHandler
WordHtmlGeneratorHelper
WordImageConvertor
RichContent

测试类
String templateName = "test.ftl";
Map data = new HashMap<>();
data.put("author", "一路生花");
data.put("createTime", "2022-08-01");

//创建富⽂本
StringBuilder sb = new StringBuilder();
sb.append("");
String cont = "

1、降低风险。2、8月6日开业。3、合作布局。4、服务中心。5、综合性交易展厅。

"; cont = cont + "

"; sb.append(cont); sb.append(""); RichContent richContent = new RichContent(); richContent.setHtml(sb.toString()); //---------------------------------------- //从mht⽂件中找,上面图片红框已勾出 richContent.setDocSrcLocationPrex("file:///C:/268BA2D4"); richContent.setDocSrcParent("test.files"); richContent.setNextPartId("01D8A815.D95DC390"); //从mht⽂件中找,上面图片红框已勾出 richContent.setShapeidPrex("_x56fe__x7247__x0020"); richContent.setTypeid("#_x0000_t75"); richContent.setSpidPrex("_x0000_i"); //----------------------------------------- RichHtmlHandler richHtmlHandler = WordHtmlGeneratorHelper.createRichHtmlHandler(richContent, false); List richHtmlHandlerList = new ArrayList<>(); richHtmlHandlerList.add(richHtmlHandler); data.put("imagesXmlHrefString", WordHtmlGeneratorHelper.getXmlImgHref(richHtmlHandlerList)); data.put("imagesBase64String", WordHtmlGeneratorHelper.getImagesBase64String(richHtmlHandlerList)); data.put("content", richHtmlHandler.getHandledDocBodyBlock()); response.addHeader("Content-Disposition", "attachment;filename=test.doc"); this.downWord(response, data, templateName); private void downWord(HttpServletResponse response, Map data, String templateName) throws Exception { // 设置FreeMarker的版本和编码格式 Configuration configuration = new Configuration(new Version("2.3.28")); configuration.setDefaultEncoding("UTF-8"); // 设置FreeMarker生成Word文档所需要的模板的路径 // 此处把模版文件都放在 resources 下的 templates 中 configuration.setClassForTemplateLoading(this.getClass(), "/templates"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); // 设置FreeMarker生成Word文档所需要的模板 Template template = configuration.getTemplate(templateName, "UTF-8"); template.process(data, out); out.flush(); out.close(); }
结果演示

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1041182.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号