FreeMarker制作word docx $ 占位符分离的处理

刘白猪
2021-08-31 / 0 评论 / 121 阅读
温馨提示:
本文最后更新于2021-08-31,若内容或图片失效,请留言反馈。

在使用zip包提取document.xml的时候,例如:$被分离成 ${ name} 此工具类可以将 等影响语义等的字符去掉。希望对你得到帮助。


public class FtlGenerate {

    public static void main(String[] args) {

        FileReader fileReader = new FileReader("C:\\Users\\xxx\\Desktop\\work-space\\server\\src\\main\\resources\\template\\docx\\document.xml");

        List<String> strings = fileReader.readLines();
        FileAppender appender = new FileAppender(FileUtil.newFile("C:\\Users\\xxx\\Desktop\\work-space\\server\\src\\main\\resources\\template\\docx\\document_result.xml")
                , 16
                , true);

        for (String string : strings) {
            if (!string.contains("$")) {
                appender.append(string);
                continue;
            }
            string = string.replaceAll("\\$", "#\\$");
            String[] ss = string.split("#");
            // 同一行的内容写到同一行,文件追加自动换行了
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < ss.length; i++) {
                String s1 = ss[i];
                if (!s1.startsWith("$")) {
                    sb.append(s1);
                    continue;
                }
                int i1 = s1.lastIndexOf("}");
                String substr = s1.substring(0, i1 + 1);
                sb.append(substr.replaceAll("<[^>]+>", ""));
                sb.append(s1.substring(i1 + 1));
            }
            appender.append(sb.toString());
        }
        appender.flush();
        appender.toString();


}
}