公司要做模板合同,网上找了很多案例。都不是很好用,后面找到一个差不多的,自己整理了下。希望需要的小伙伴可以用到,另外也是想的以后不用那么麻烦的找了。
不说那么多直接上代码吧
首先需要5个jar包

需要说的是iTextAsian.jar 是处理字体的jar包必不可少,如果是英文合同那就算了哈
另外需要自己下载个字体库,不用都下,用啥字体下载啥字体,就可以了
再说说模板,因为iText对html的支持不是很好,所以还是要模板尽量用table控制
接下来就是我们 的代码了
package tempTest;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class ftlTopdf {
private static Logger log = Logger.getLogger(ftlTopdf.class.getName());
private Configuration configuration = null;
String producePdfPath = "";
public ftlTopdf() {
configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
}
/**
* 生成pdf
*
* @param params
* @param tempUrl
* @param htmlUrl
* @param pdFUrl
* @return
*/
public String processPdf(Map<String, Object> params, String templPath, String ftlName, String htmlPath,
String pdfPath, String fontPath) {
// 得到模板地址
try {
configuration.setDirectoryForTemplateLoading(new File(templPath));
Template temp = configuration.getTemplate(ftlName);
File htmlFile = new File(htmlPath);
if (!htmlFile.exists()) {
htmlFile.createNewFile();
}
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(htmlPath)), "utf-8"));
temp.process(params, out);
out.flush();
String url = htmlFile.toURI().toURL().toString();
OutputStream os = new FileOutputStream(pdfPath);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
// 解决中文问题
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont(fontPath + "simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.layout();
renderer.createPDF(os);
os.close();
} catch (Exception e) {
log.info(e.toString());
return "";
}
return pdfPath;
}
public static void main(String[] args) {
ftlTopdf cert=new ftlTopdf();
Map<String, Object> map=new HashMap<>();
map.put("customerName", "user");
map.put("customerAddress", "北京市通州区高里掌路1号");
map.put("customerTel", "");
map.put("customerEmail", "@qq.com");
map.put("AcapAmount", "");
map.put("orderAmount", "");
cert.processPdf(map, "E:/templent/", "jybftl.ftl", "D:/aaa.html", "D:/aaa.pdf", "D:/fonts/");
}
}
好了 想要jar包的小伙伴可以去这里下
另外加个模板
font字体库就不加了啊 自己找点就好了 一般就是楷体 希腊语啥的
链接: https://pan.baidu.com/s/1kUEpF2R 密码: k8z2