freemarker模板生成pdf

一,依赖jar包



    org.freemarker
    freemarker
    2.3.23


    
    org.xhtmlrenderer
    flying-saucer-pdf
    9.0.9



    com.google.guava
    guava
    18.0

二,模板文件(为html,命名后缀为.ftl)

freemarker模板生成pdf_第1张图片



	
		
		
		
	
	
		
		

某报告

尊敬的用户:

内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容

汇总统计信息

本月笔数 近三个月数量对比
${curr}
${one} ${two} ${three}

明细

<#list detailList as ad>
序号 列1 列2 列3 列4 列5
${ad_index+1} ${ad.column1} ${ad.column2} ${ad.column3} ${ad.column4} ${ad.column5}

三,工具类实现

package com.htf.utils;

/**
 * @Auther: admin
 * @Date: 2019/8/10 12:59
 * @Description:
 */

import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.StringWriter;
import java.util.Locale;
import java.util.Map;

import freemarker.template.Template;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;
import freemarker.template.Configuration;

import javax.servlet.http.HttpServletResponse;

public class PdfTemplateUtil {


    //构造器私有,防止别人通过new对象调用
    private PdfTemplateUtil() {
    }

    /**
     * @param data             模板数据
     * @param templateFileName freemarker模板文件名
     * @return : java.io.ByteArrayOutputStream
     * @auther : $Mr. Liu$
     * @date : 2019/8/9 14:45
     * @description : 通过模板导出pdf文件(有返回值)
     **/

    public static ByteArrayOutputStream createPDF(Map data, String templateFileName) throws Exception {
        // 创建一个FreeMarker实例, 负责管理FreeMarker模板的Configuration实例
        Configuration configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
        // 指定FreeMarker模板文件的位置
        configuration.setClassForTemplateLoading(PdfTemplateUtil.class, "/templates");
        ITextRenderer renderer = new ITextRenderer();
        OutputStream out = new ByteArrayOutputStream();
        StringWriter writer = new StringWriter();

        try {
            // 设置 css中 的字体样式(暂时仅支持宋体和黑体) 必须,不然中文不显示
            ITextFontResolver fontResolver = renderer.getFontResolver();
            fontResolver.addFont("C:/Windows/Fonts/simsun.ttc"

你可能感兴趣的:(工具类)