🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一、概述 基于模板,动态产生pdf文件,比如电子合同导出等; ## 二、方案 ### **制作word模板** 首先、想要替换的内容换成${name},就是用将来你需要替换的数据暂时用变量表示出来,后续只要替换变量的值即可; ![](https://img.kancloud.cn/28/0c/280c0de3ae8625db11b4dae3a366c5b3_1920x1030.png) 然后、将word的字体换成宋体(通用),文件另存为Word XML格式文件; ![](https://img.kancloud.cn/bb/86/bb8698ab6021dee002626162329e66da_1162x787.png) 最后、将文件改名,以.ftl形式结尾; ### **基于word模板生成pdf** 代码逻辑: 读取ftl文件,将其转化成xml字符串。读取xml字符串,将其转换成word,读取word,利用dom4j将其转换成你想要的模式的pdf; ![](https://img.kancloud.cn/01/23/0123d86a69107d1342e99eeae28296c1_1835x782.png) ``` Map dataMap = new HashMap(); dataMap.put("name", "测试"); dataMap.put("idcard", "3331112221112221111"); dataMap.put("tel", "19999999999"); dataMap.put("desc", "具体情况看看"); String outputfilepath = "D:\\test2.pdf"; PdfGenerator.createPdf(dataMap, "testword.ftl", outputfilepath); ```