freemarker在word成文时换行、空格、字符转义处理

您所在的位置:网站首页 如何设置word不显示回车符号格式 freemarker在word成文时换行、空格、字符转义处理

freemarker在word成文时换行、空格、字符转义处理

2023-08-07 01:10| 来源: 网络整理| 查看: 265

package com.cosy.utils; /** * @author: why * @Date: 2020/4/11 10:24 * @Description: 解决word成文格式显示问题 */ public class FreemarkerWordFormatUtil { /** * @Description 格式化文本内容,使其freemarker解析的word文本内容成文格式与用户页面文本格式相同 * @Author why * @Date 2020/4/11 10:12 * @Param text 带有格式的文本内容 */ public static String getFormatText(String text){ //处理转义字符 text = transform(text); //TODO 此处只考虑word成文过程中换行、空格显示问题,在实际开发过程中,可能会遇到其他格式显示,可在此处根据业务需求进行维护 //freemarker 换行 text = text.replaceAll("\r\n",""); //freemarker enter换行 text = text.replaceAll("\n",""); //freemarker 空格 采用ASCII编码值进行替换 text = text.replaceAll(" "," "); //freemarker tab text = text.replaceAll("\t","        "); return text ; } }

根据ftl模板导出word时,如果填充的字符含有特殊字符< 、>、&,那么导出的word是无法打开的。因为这些字符在导出word时被认为是ftl的标签,正常导出后再打开是会报错。如果以xml的方式打开,会发现所有内容都是完整的,唯独上面三个特殊字符出问题。 为了解决这个问题,首先我新建一个word,在里面填上上面三个特殊字符,然后保存为xml。在该xml中找到对应的字符,发现已经转义了 ; 对应< ;对应> ;对应& 可以看出,如果填充的是转义后的字符是可以正常打开的。所以要在填充字符之前检测私服是否含有上述特殊字符,如果有就需要转义。代码如下:

/** * 处理转义字符 * @param str * @return */ private String transform(String str){ if(str.contains("")||str.contains("&")){ str=str.replaceAll("&", ";"); str=str.replaceAll("", ";"); } return str; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3