1、思路:先通过模板生成HTML文件 --> 再把HTML文件生成PDF
2、pom.xml,增加itext 和 freemaker 的依赖
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf-itext5</artifactId>
<version>9.1.6</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/freemarker-null-2.3.19.jar</systemPath>
</dependency>
3、编写工具类:
package com.jeecg.wpxx.util;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.BaseFont;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import org.xhtmlrenderer.pdf.ITextRenderer;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.Map;
public class PdfUtilsPic {
private static Template getTemplate(String template_path, String templateFileName, HttpServletRequest request) {
Configuration configuration = new Configuration();
Template template = null;
try {
configuration.setDirectoryForTemplateLoading(new File(request.getSession().getServletContext().getRealPath("/")+"export/template"));
configuration.setObjectWrapper(new DefaultObjectWrapper());
configuration.setDefaultEncoding("UTF-8"); //设置编码格式
//模板文件
template = configuration.getTemplate(templateFileName );
} catch (IOException e) {
e.printStackTrace();
}