好久没写博客了,不是没东西写而是犯懒不想写,最近实在积累太多不写点担心全丢了,反正前一阵子的东西时找不回来了啦,赶紧趁有时间、有激情、有记忆记点是点吧。好啦,罗里吧嗦到这里,言归正传。
最近弄一项目,要求把人的基本信息和各项事迹弄成一个简历,并且导出为word、html、pdf三种格式。导出为word和html都使用的freemarker,生成pdf使用的flying saucer技术,这些技术都比较娴熟了,网上的资料也比较多,这里根据自己的实际情况记载一下,以及做的过程中遇到的一些问题。
生成word这篇文件已经介绍过了,这里就不赘述了。这里说生成html文件。
生成html文件使用的技术和生成word是一样的,流程和模式也是一样的。
1、创建模板文件:写一个符合条件和样式要求的html页面或者jsp页面,然后将其中的具体内容使用EL进行格式化(具体的可以看生成word的那篇,讲的比较详情)。我这里的基本内容如下(内容比较多,节选):
<%--基本信息 --%>
<tr>
<td class="resume-tit" >姓 名</td>
<td width="112" >${field2}</td>
<td class="resume-tit" >性 别</td>
<td width="112" >${field3}</td>
<%--电子照片 --%>
<td width="120" align="center" rowspan="5">
<img width="120" height="150" src="${field30}" />
</td>
</tr>
<%--个人基本事迹 --%>
<#if (table4List?size>0)>
<tr>
<td class="resume-tit">获奖情况</td>
<td colspan="4">
<ul class="jlitem">
<#list table4List as t4>
<li>${t4.order}、
<b>成果名称</b>:${t4.field3}<br />
<b>获奖名称及等级</b>:${t4.field4}
<b>本人排名</b>:${t4.field5}</li>
</#list>
</ul>
</td>
</tr>
</#if>
这里有几个说明点:
a、基本信息其实还有很多,个人基本事迹也有4个列表,这里只是截取其中一个比较有代表性的。
b、在freemarker中,可以使用<#if>标签进行判断。因为并不是每个人都有获奖的情况,若是没有那么在简历中获奖情况这块就不应该再显示。
c、获取list的长度,用size属性,结构:table4List?size,而且结合if使用时,一定要用括号将table4List?size括起来(形如:<#if (table4List?size>0)>),不然相当于没有判断。
d、循环list,使用<#list>标签,各个属性值的获取参照放进去时候的赋值(第三步赋值有具体说明)
2、修改后缀名:修改第一步中的html/jsp文件的后缀名,改成ftl格式。
3、读取模板文件需要的数据:根据主键序号从数据库中读取基本信息,并放到一个map中进行返回。
基本属性直接使用key-value放到map中,如将姓名为wjl的放到map中,第一步中姓名的代替符是${field2},也就是field2,那么:map.put(”field2“&#x