本文转自:::http://hucheng91.github.io/2017/04/09/web/java/freemarker_xdocxreport/
//================================转者附注释=====================================
最近有个问题是,通过freemarker生成的word出现了问题,因为是先把word转换为xml作为模板填充的文件,所以生成的doc的底层还是xml格式的,openoffice转换为的pdf出现了pdf中全是xml格式的问题,后面经过发现了下面这篇博文,完美的解决了我们的问题。
注:我们使用的openoffice,没有使用xdoxreport。这个性能不是很好。所以下面删除了有关xdoxreport的内容
//================================结束==========================================
最近公司有个业务,是要生成pdf形式的合约,合约模版是有十几页的word,根据不同的客户,模版有些地方填入不同的值,然后生成pdf格式的合约。最开始打算用JasperReports,先把这个模版画出来,但是由于模版页数太多,样式很复杂,JasperReports处理起来简直就是噩梦,果断放弃,随后我又调研了doc4j,openoffice;doc4j处理复杂文档也不是太好,加粗的字体都没有显示出来,对office2013不怎么支持,openoffice得单独装一个服务端,很是耗资源,也放弃了;最后我选择了先用freemarker将模版变量填入生成一个docx,在用xdocreport这个库来将docx转换成pdf,成功的实现了,支持office的2007,2013等,而且docx样式也完全保留下来,而且整个过程非常快,不怎么耗费资源,内存;
先介绍下freemarke
- freemarker是java里一个模版框架,和ve