You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ITextRenderer从Thymeleaf HTML模板生成A4尺寸PDF

如何用ITextRenderer设置A4页面尺寸适配Thymeleaf生成的PDF

我来帮你搞定这个页面尺寸的问题!ITextRenderer默认的页面尺寸可能不是标准A4,你只需要在加载HTML文档之前配置PDFWriter的页面大小即可。下面是修改后的完整代码,关键部分我标出来了:

import com.lowagie.text.PageSize; // 记得导入这个类
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import com.lowagie.text.DocumentException;
import org.xhtmlrenderer.pdf.ITextRenderer;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.IOException;

public class PdfGenerator {
    public static void main(String[] args) throws IOException, DocumentException {
        ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        
        TemplateEngine templateEngine = new TemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        
        Context context = new Context();
        context.setVariable("name", "Thomas");
        
        String html = templateEngine.process("templates/Quote", context);
        OutputStream outputStream = new FileOutputStream("message.pdf");
        
        ITextRenderer renderer = new ITextRenderer();
        
        // 关键步骤:设置A4页面尺寸,必须在setDocumentFromString之前调用
        renderer.getPDFWriter().setPageSize(PageSize.A4);
        
        renderer.setDocumentFromString(html);
        renderer.layout();
        renderer.createPDF(outputStream, true);
        
        outputStream.close();
    }
}

重点说明:

  • 一定要导入com.lowagie.text.PageSize类,这是ITextRenderer依赖的iText旧版本的包(注意不是com.itextpdf.text.PageSize,因为XHTMLRenderer用的是iText 2.x分支)
  • 必须在调用setDocumentFromString()之前设置页面尺寸,否则配置不会生效——因为一旦加载了HTML文档,渲染器就已经确定了页面布局规则
  • PageSize.A4是预定义的标准A4尺寸(210mm × 297mm),如果需要横向A4,可以用PageSize.A4.rotate()

内容的提问来源于stack exchange,提问作者Ketan Navadiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:17:55