利用freemarker 模板生成pdf文件,通过浏览器直接下载或生成文件到指定目录
1.pom.xml文件
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.0.9</version>
</dependency>
2.pdf模板配置工具类
package com.jeesite.modules.jss.Utils;
import com.lowagie.text.pdf.BaseFont;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.xhtmlrenderer.pdf.ITextRenderer;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.StringWriter;
import java.util.Locale;
import java.util.Map;
public class PDFTemplateUtil {
public static ByteArrayOutputStream createPDF(Map<String,Object> data, String templateFileName) throws Exception {
Configuration cfg = new Configuration(Configuration.VERSION_2_3_30 );
cfg.setClassicCompatible(true);
cfg.setClassForTemplateLoading(PDFTemplateUtil.class,"/template");
ITextRenderer renderer = new ITextRenderer();
OutputStream out = new ByteArrayOutputStream();
try {
renderer.getFontResolver().addFont("/template/font/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
cfg.setEncoding(Locale.CHINA, "UTF-8");
Template template = cfg.getTemplate(templateFileName, "UTF-8");
StringWriter writer = new StringWriter();
template.process(data, writer);
writer.flush();
String html = writer.toString();
renderer.setDocumentFromString(html);
String url = PDFTemplateUtil.class.getClassLoader().getResource("images").toURI().toString();
renderer.getSharedContext().setBaseURL(url);
renderer.layout();
renderer.createPDF(out, false);
renderer