当前位置: 首页 > article >正文

使用freemarker实现在线展示文档功能开发,包括数据填充

在这里插入图片描述

首先,在这个独属于程序员节日的这一天,祝大家节日快乐【求职的能找到心仪的工作,已经工作的工资翻倍】。

---------------------------------------------------------------回到正文-----------------------------------------------------------------

现在需求如下:

客户需要实现把word文档直接展示在浏览器上查看。

实现技术:

1、使用WPS组件实现在线预览文档实现;
2、使用Freemarker技术及html、ftl模板后端返回整个html的字符串,前端直接展示。

最终选择:

综合考虑下选择了第二种来实现,下面是完整实现。

完整实现:

1、先把word模板转换成html模板。

可以直接使用这个在线转换网站来转:点击跳转
【注意:不要使用WPS转html模板,样式、中文乱码都有问题】

原word模板如下:
在这里插入图片描述
转换后html模板如下:
在这里插入图片描述

2、把html模板放到resources/templates下[或者template都行]

在这里插入图片描述

3、添加freemarker依赖:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

3、Controller层代码如下:


	@Autowired
    @Qualifier("viewService")
    private ViewService viewService;
    
 	@GetMapping("/view")
    public String view(@RequestParam("formId") String formId, @RequestParam("beanId") String beanId)
            throws IOException, TemplateException {
        return viewService.view(formId, beanId);
    }

4、Service层代码如下(这里就只提供实现层代码了):

import freemarker.template.Configuration;
import org.apache.commons.lang.WordUtils;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;

 @Override
    public String view(String formId, String beanId) throws IOException, TemplateException {
        //这是数据处理,查出数据,格式为Map,你们自己处理就行
        //Map<String, Object> map = assembleParam(formId, beanId);
        
        Configuration configuration = new Configuration();
        //设置编码
        configuration.setDefaultEncoding("UTF-8");
        //ftl模板文件
        configuration.setClassForTemplateLoading(WordUtils.class, "/");
        //获取模板
        Template template = null;
        //这块需要写你自己的模板位置及名称
        template = configuration.getTemplate("template/aa.html");
        String resStr = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        return resStr;
    }

5、postman测试返回数据如下:

该接口会以字符串的形式返回整个html,包括数据及样式。

在这里插入图片描述

6、前端拿到后直接做展示处理,页面打开效果如下:

在这里插入图片描述

结语:

要是对您有帮助的话,就点个赞呗!!!!非常感谢

http://www.kler.cn/news/364259.html

相关文章:

  • 「C/C++」C++17 之 std::variant 安全的联合体(变体)
  • SLAM|2. 差异与统一:坐标系变换与外参标定
  • ASP.NET Core 路由规则 MapControllerRoute、MapDefaultControllerRoute、MapController
  • ProtoBuf 的含义和安装
  • Java八股文-Mysql
  • Android 两种方式实现类似水波扩散效果
  • 【NPM】工程化依赖包/库开发 之 基础知识
  • 【2024工业图像异常检测代码复现】GLASS
  • 【Linux】进程池
  • 前端——原生Selection api操作选中文本 样式、取消样式(解决标签的无限嵌套问题)
  • 《Java与API的浪漫邂逅:一键获取商品详情》
  • 在Centos7.9服务器上使用LVM方式挂载磁盘以及Windows磁盘性能测试与Linux磁盘性能测试命令hdparm详细
  • 构建简单的梯度提升决策树(GBDT)模型:MATLAB 实现详解
  • 酒店定制门牌的材质有哪些
  • Pr 视频效果:色阶
  • nginx与http的前世今生详解
  • 10. mapreduce实现wordcount
  • CSS实现旗帜效果
  • Ubuntu下Mysql修改默认存储路径
  • C语言题目练习5——有效的括号
  • 卫生巾干燥导渗技术的研究与应用(美国全意卫生巾提出研究并发布)
  • 从本地到云端:跨用户请求问题的完美解决方案
  • Brave编译指南2024 Android篇-更新与维护(八)
  • C#中几种多线程调用方式
  • 想进体制内?到底有哪些路可走?原来有这么多方法
  • 基于SSM健身国际俱乐部系统的设计