freemark模板 加 iText创建pdf合同

来源:互联网 发布:擎天软件科技有限公司 编辑:程序博客网 时间:2024/05/01 04:14

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

      

      不说那么多直接上代码吧 

      首先需要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


 

0 0