做OA开发大概有一年多了,现在总结一下OA开发中我遇到的常用的文档处理。
问题描述:现在各种所见即所得的插件已经是很丰富了,用户填写一些内容的时候,往往是文字,图片,混填,但是根据用户填写的内容生成word文档的时候去发现一个问题。
用户富文本编辑器中保存的图片,没有办法直接保存到word文档中,这样一来,就会内容丢失。
解决方案:利用freemarker + xml 或者volcity +vm 直接 先 制作模板,在将数据库中对应的字段,达成标签的形式,咱们开发的时候对允许上传图片的内容,尽心过滤,将原来的图片路径用特殊的标记进行替换。
等到生成word文档之后,再调用java2word 进行替换,将图片插入原来打标记的位置。
Properties pro = new Properties();
pro.setProperty(Velocity.OUTPUT_ENCODING, "gbk");
pro.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, this.getClass()
.getResource("/").toString().replaceAll("^file:/", "")
.replaceAll("WEB-INF/classes", "")+"vm");
// 初始化并取得Velocity引擎
VelocityEngine ve = null;
try {
ve = new VelocityEngine(pro);
} catch (Exception e) {
e.printStackTrace();
}
// 取得velocity的模版
try {
Template t = ve.getTemplate("index.vm", "gbk");
VelocityContext context = new VelocityContext();
StringWriter writer = new StringWriter();
// 转换输出
t.merge(context, writer);
生成word文档,然后利用java2word将图片插入原来做好标记的位置。