freemark模板 加 iText创建pdf合同

xiaoxiao2021-02-27  391

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

      

      不说那么多直接上代码吧 

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

 

转载请注明原文地址: https://www.6miu.com/read-1464.html

最新回复(0)