您的位置:首页 > 编程语言 > Java开发

Java通过freemarker生成pdf文件并盖章

2017-03-24 14:48 603 查看

Java代码生成pdf回执文件,直接上代码:

package com.pdf;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;

import org.xhtmlrenderer.pdf.ITextRenderer;

import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.BaseFont;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class PdfHandler {

private static final String CONTRACT = "resource/contract/";//合同文件存储路径
private static final String TEMPLATE = "resource/templates/";//模板存储路径

private static final String PDFNAME = "pdfDemo";//pdf文件名
private static final String HTMLNAME = "pdfDemo";//html文件名

public static void contractHandler(String templateName,
HashMap paramMap) throws Exception{
// 获取本地模板存储路径、合同文件存储路径
String templatePath = TEMPLATE;
String contractPath = CONTRACT;
// 组装html和pdf合同的全路径URL
String localHtmlUrl = contractPath + HTMLNAME + ".html";
String localPdfPath = contractPath + "/";
// 判断本地路径是否存在如果不存在则创建
File localFile = new File(localPdfPath);
if (!localFile.exists()) {
localFile.mkdirs();
}
String localPdfUrl = localFile + "/" + PDFNAME + ".pdf";
templateName=templateName+".ftl";
htmHandler(templatePath, templateName, localHtmlUrl, paramMap);// 生成html合同
pdfHandler(localHtmlUrl, localPdfUrl);// 根据html合同生成pdf合同
deleteFile(localHtmlUrl);// 删除html格式合同

System.out.println("PDF生成成功");
}

/**
* 生成html格式合同
*/
private static void htmHandler(String templatePath, String templateName,
String htmUrl, HashMap paramMap) throws Exception {
Configuration cfg = new Configuration();
cfg.setDefaultEncoding("UTF-8");
cfg.setDirectoryForTemplateLoading(new File(templatePath));

Template template = cfg.getTemplate(templateName);

File outHtmFile = new File(htmUrl);

Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outHtmFile)));
template.process(paramMap, out);

out.close();
}

/**
* 生成pdf格式合同
*/
private static void pdfHandler(String htmUrl, String pdfUrl)
throws DocumentException, IOException {
File htmFile = new File(htmUrl);
File pdfFile = new File(pdfUrl);

String url = htmFile.toURI().toURL().toString();

OutputStream os = new FileOutputStream(pdfFile);

org.xhtmlrenderer.pdf.ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);

org.xhtmlrenderer.pdf.ITextFontResolver fontResolver = renderer
.getFontResolver();
// 解决中文支持问题
fontResolver.addFont(TEMPLATE+"simsun.ttc",
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

renderer.layout();
renderer.createPDF(os);
os.close();
}

/**
* 删除文件
*/
private static void deleteFile(String fileUrl) {
File file = new File(fileUrl);
file.delete();
}

public static void main(String[] args) throws Exception {
String templateName = "201";
HashMap paramMap = new HashMap<>();
paramMap.put("ZJHKZH", "271003********279975");
paramMap.put("KYYE", "79244.95");
paramMap.put("LXFS", "配置web.xml中LXFS属性,例如(张小凡,123,4567,8909)");
paramMap.put("KHWD", "2****1");
paramMap.put("CSKSRQ", "2016年10月31日00时00分");
paramMap.put("KSRQ", "2017-03-14");
paramMap.put("YE","94444.95");
paramMap.put("KHZH","271**********07279975");
paramMap.put("AH", "(2015)****字第0***0号");
paramMap.put("CKH", "(2017)法YH****9控字第*号");
paramMap.put("YDJAH", "(2015)***执字第00020号");
paramMap.put("KZCS", "01");
paramMap.put("XM", "張三豐");
paramMap.put("FYMC", "****人民法院");
paramMap.put("JSRQ", "2017-06-14");
paramMap.put("KZZT", "1");
paramMap.put("SE", "100");
paramMap.put("LCZH", "987234234");
paramMap.put("DATE", "2017年03月24日09时39分");
paramMap.put("CKWH", "(2015)*****字第0**20-1**0号裁定书");
paramMap.put("SKSE", "100");
paramMap.put("CSJSRQ", "2016年10月31日 00时00分");

contractHandler(templateName, paramMap);
}
}

Demo工程截图:




Demo工程链接:点击打开工程连接


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: