FreeMarker一些常见错误的总结

来源:互联网 发布:ostagram 软件差不多的 编辑:程序博客网 时间:2024/05/19 06:50

最近在做一个人物管理系统,需要做一个导出word的功能。经过一番查找,最终决定使用FreeMarker来做这个东西,做了两天,终于成型了。部分效果如下(表内数据纯属虚构).

具体步骤就不一一赘述了,一搜一大堆。

在具体使用的过程中,出现过一下问题。

1.FreeMarker 多行数据的换行问题,在FreeMarker 中会把“\n”处理厂空格,所以需要换行的时候需要把“\n”替换掉。

string = string.replaceAll("\n", "<w:br />");
2.FreeMarker 在刚开始使用时,经常莫名其妙地报标签匹配错。如下

Was expecting one of:    <STRING_LITERAL> ...    <RAW_STRING> ...    "false" ...    "true" ...    <INTEGER> ...    <DECIMAL> ...    "." ...    "+" ...    "-" ...    "!" ...    "[" ...    "(" ...    "{" ...    <ID> ...
这种错误一般都是因为自定义标签的问题,而且当标签多的时候,查找起来就很困难了。所以在写的的时候,一定要仔细,不要漏掉一些括号之类的符号。

但有的时候,已经确保标签已经没有任何问题,但还是报上面的错误。郁闷了很长时间,最后找到了问题所在,在编辑word的时候使用了WPS,解决方案:就是只用Office Word编辑,不要使用WPS.

3.图片插入问题,在word插入一张头像后,只显示其中的一行,这也很令人郁闷,虽然只是一个word的问题,也有研究了半个小时。最后是因为行高问题,调节行高,即可显示整张图片。

4.在插入图片的时候,一定要注意>${image}<这尖括号中间不能加任何其他的诸如空格,tab,换行等符号!在这上面这两天可吃了不少苦。

    5.对于flt中所有定义的标签,必须在map中放入其键值对。不然又会报错。

    最后做完后发现,导出的doc,使用word可以正常打开,但是在wps中的换行的显示效果却差强人意,目前还没有比较好的解决办法。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

补充:2014 02 12

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解决一FreeMarker中图片无法显示的错误:

起因:如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码: 
<w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0…(base64码)…CC</w:binData> 
只要将base64的代码替换成例如:${image},测试OK,没有问题。但是,在编辑其他标签后,负责图片的<w:binData/>标签不负责任的消失了,楼主是在word2003下进行编辑的。

解决方案:使用FreeMarker生产word时,当其他标签部分都做好时,再做图片部分。

0 0
原创粉丝点击