FreeMarker 生成合同

本文介绍了如何利用FreeMarker将XML格式的Word合同模板转换为HTML和PDF。首先将Word合同转为XML (.ftl),然后通过工具查询和替换内容。接着覆盖合同并保存,再通过FreeMarker生成word版合同。最后,利用模板生成PDF合同,替换占位符并创建文件。
摘要由CSDN通过智能技术生成

在实际工作中遇到过生成合同模版的问题,这里解决方案之一吧:

1,首先通过工具把word 合同生成 xml 文档  ,直接另存为 XML 格式文档即可。然后保存为 .ftl 模版

2.  使用工具查询要替换更新的内容

        3. 对模版的内容进行替换更新,本实例对生成 html2pdf 文档 还可优化  具体可参考 html2PDF 文章内容

代码:

    1. 覆盖合同

@Override
public String uploadFile(File imagePath, String imagePathFileName,
Map<Object, Object> fileUrlConfig, String imageInfoPath) {


if (imagePath != null) {
// 1上传文件的类型
String typeStr = imagePathFileName.substring(imagePathFileName
.lastIndexOf("."));
// 判断图片后缀是否符合要求,忽略大小写的判断
try {
// 需要修改文件的后缀名称
String newName = imagePathFileName.substring(imagePathFileName
.lastIndexOf("."));
// 生成随机文件名:当前年月日时分秒+五位随机数(为了在实际项目中防止文件同名而进行的处理)
// String randomCode=Utils.getRandomCode();
String randomCode = String.valueOf(Calendar.getInstance()
.getTimeInMillis());
// 原始图片文件编译后的新名称
newName = randomCode + newName;
// 定义新文件保存实际路径+配置文件systemConfig.properties中定义的文件生成目录规则:年月日
String newImagePath = FileTypeUtil.getSerial(new Date(),
fileUrlConfig.get("fileRule")) + "/";
// 定义文件对象,需要加上盘符
File savefile = new File((fileUrlConfig.get("contractRoot")
+ "/" + newImagePath), newName);
// 判断文件是否存在,不存在则新创建
if (!savefile.getParentFile().exists()) {
savefile.getParentFile().mkdirs();
}
FileUtils.copyFile(imagePath, savefile);
imagePathFileName = newName;
// return imagePathFileName;
return savefile.toString();
} catch (IOException e) {
e.printStackTrace();
return "图片上传失败!";
}


}
return imagePathFileName;
}

2 word版合同

/**
* 根据合同模板生成word版合同, dataMap是表示生成合同所要传入的数据,所有的数据全部放在map中去,
* 并且map的key值必须跟合同模板中占位符的名字一致,如果值为空的话,一定要将其值赋值为空字符串;
* 模板中的占位符用${}包围起来;
* templateRootUrl是表示生成合同所需要模板的路径; contractRootUrl是表示生成的合同所放位置的路径;
* fileRuleUrl是代表生成合同所放路径目录的格式; 
* templateName表示模板的名字
* 此方法的返回值是新生成的word合同的名字;
* @zp
*/
public String createWordContract(Map dataMap, String templateRootUrl,String contractRootUrl, 
Object fileRuleUrl, String templateName) {


// 定义文本写入字符输出流,用于最终生成word合同
Writer out = null;
// 定义生成word合同文件的名字,也是最终的返回值
String fileN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值