原创 

关于freemark 字符超长 ,渲染换行,完美方案

分类:java    424人阅读    IT小君  2021-03-09 20:56

官方介绍:

FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。


背景:

    使用spring-boot-starter-freemarker + core-renderer 将生成的html转成图片碰到一个问题,当文字超长时 不会换行,导致其他内容超出图片。所以怎么实现换行呢?


思路一:

    后端代码按照字符长度截断添加"<br/>"放到字符中然后页面显示字符,

    注意点:需要设置br border-width:0px


思路二:

<#list 0..(str?length)!0 as i> 
 ${str?substring(0,i)}  
<#if i gt 24>  
<div style='border-width:0px'> 
 ${str?substring(0,i)}  
</div> 
 </#if>
</#list>


思路三:

<#if item.create_org_name?length gt 18>   
${item.content}
<#else> 
     ${item.content?substring(18,item.create_org_name?length)}
</#if>


思路四,实现freemark 渲染方法:

package com.mall.service;

import freemarker.template.SimpleScalar;
import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModel;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

@Slf4j
public class LineFeedMethod implements TemplateMethodModelEx {


    public static final int MAX_LENGTH = 8;

    public TemplateModel exec(List args) {
        Object data = args.get(0);
        String val = "";
        int txtLength = MAX_LENGTH;
        if (args.size() > 2) {
            txtLength = Integer.parseInt(args.get(1).toString());
        }
        if (null != data) {

            StringBuilder sb = new StringBuilder();
            val = data.toString();
            int len = val.length();
            int pages = (int) Math.ceil((double) len / txtLength);
            for (int i = 0; i < pages; i++) {
                sb.append("
"); int end = (i + 1) * txtLength; sb.append(val.substring(i * txtLength, end > len ? len : end)); sb.append("
"); } val = sb.toString(); } return new SimpleScalar(val); } }

通过data将方法传递给页面


data.put("lineFeed",new LineFeedMethod());

页面使用


{$lineFeed(item.remark)}
点击广告,支持我们为你提供更好的服务

css+js实现的颜色渐变数字时钟动画特效

css鼠标跟随文字模糊特效

有机水果蔬菜HTML5网站模板

HTML5数字产品服务公司网站模板

js+css3抽奖转盘旋转点餐代码

jQuery右端悬浮带返回顶部特效

canvas炫酷鼠标移动文字粒子特效

响应式咖啡饮品宣传网站模板

响应式时尚单品在线商城网站模板

html5图标下拉搜索框自动匹配代码

响应式太阳能能源公司网站模板

HTML5 Canvas竖直流动线条背景动画特效

html5 canvas进度条圆环图表统计动画特效

现代时尚家具公司网站模板

html5 svg夜空中星星流星动画场景特效

HTML5现代家居装潢公司网站模板

小众时尚单品在线电子商务网站模板

中小型创意设计服务公司网站模板

网页设计开发公司网站模板

html5 canvas彩色碎片组合球形旋转动画特效

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务