springboot+Thymeleaf生成PDF

本文介绍如何在SpringBoot项目中利用Thymeleaf生成PDF文件。首先,需要在pom.xml中添加相关依赖。接着,提供一个PDF工具类用于转换HTML到PDF。注意,为了解决汉字显示问题,需要正确引用字体。由于HTML排版限制,建议使用table布局。此外,为了更好地控制页面样式,应在CSS中添加@page规则。
摘要由CSDN通过智能技术生成

springboot项目创建以后,pom添加

<!--pdf模板生成-->
        <dependency>
            <groupId>org.xhtmlrenderer</groupId>
            <artifactId>flying-saucer-pdf</artifactId>
            <version>9.0.7</version>
        </dependency>

pdf工具类

package com.ydrx.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.AbstractConfigurableTemplateResolver;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;

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

public class PDFGenerator {
	private Logger logger = LoggerFactory.getLogger(PDFGenerator.class);
	private AbstractConfigurableTemplateResolver templateResolver;
	private TemplateEngine templateEngine;

	public PDFGenerator(final String templatePrefix, final String templateSuffix) {

		this(templatePrefix, templateSuffix, "HTML5", "UTF-8");
	}

	public PDFGenerator(final String templatePrefix, final String templateSuffix, final String templateMode,
			final String templateEncoding) {

		this(new ClassLoaderTemplateResolver());

		this.templateResolver.setPrefix(templatePrefix);
		this.templateResolver.setSuffix(templateSuffix);
		this.templateResolver.setTemplateMode(templateMode);
		this.templateResolver.setCharacterEncoding(templateEncoding);
	}

	public PDFGenerator(AbstractConfigurableTemplateResolver templateResolver) {
		this.templateResolver = templateResolver;
	}

	public PDFGenerator(TemplateEngine templateEngine) {
		this.templateEngine = templateEngine;
	}

	private TemplateEngine getTemplateEngine() {
		if (templateEngine == null) {
			templateEngine = new TemplateEngine();
			templateEngine.setTemplateResolver(templateResolver);
		}

		return templateEngine;
	}

	/**
	 * 根据模板生成一个PDF
	 *
	 * @param ouputPDF
	 *            Target pdf file.
	 * @param template
	 *            Source template.
	 * @param model
	 *            The data for the template.
	 * @throws FileNotFoundException
	 * @throws DocumentException
	 */
	public void generate(File ouputPDF, String template, Map<String, Object> model)
			throws FileNotFoundException
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值