知識庫 / Spring / Spring MVC RSS 訂閱

使用Thymeleaf生成PDF文件

Spring MVC
HongKong
4
12:57 PM · Dec 06 ,2025

1. 概述

在本教程中,我們將學習如何使用 Thymeleaf 作為模板引擎生成 PDF 文檔,通過一個快速且實用的示例。

2. Maven 依賴

首先,讓我們添加我們的 Thymeleaf 依賴:Thymeleaf

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

Thymeleaf 本身只是一個模板引擎,它本身無法生成 PDF。為了實現此目的,我們將添加 flying-saucer-pdf 到我們的 pom.xml 中:

<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf</artifactId>
    <version>9.5.1</version>
</dependency>

3. 生成 PDF

接下來,讓我們創建一個簡單的 Thymeleaf HTML 模板 – thymeleaf_template.html

<html xmlns:th="http://www.thymeleaf.org">
  <body>
    <h3 style="text-align: center; color: green">
      <span th:text="'Welcome to ' + ${to} + '!'"></span>
    </h3>
  </body>
</html>

然後,我們將創建一個簡單的函數——parseThymeleafTemplate ——它將解析我們的模板並返回一個 HTML String

private String parseThymeleafTemplate() {
    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode(TemplateMode.HTML);

    TemplateEngine templateEngine = new TemplateEngine();
    templateEngine.setTemplateResolver(templateResolver);

    Context context = new Context();
    context.setVariable("to", "Baeldung");

    return templateEngine.process("thymeleaf_template", context);
}

最後,讓我們實現一個簡單的函數,該函數接收先前生成的 HTML 作為輸入,並將 PDF 寫入我們的家目錄:

public void generatePdfFromHtml(String html) {
    String outputFolder = System.getProperty("user.home") + File.separator + "thymeleaf.pdf";
    OutputStream outputStream = new FileOutputStream(outputFolder);

    ITextRenderer renderer = new ITextRenderer();
    renderer.setDocumentFromString(html);
    renderer.layout();
    renderer.createPDF(outputStream);

    outputStream.close();
}

運行我們的代碼後,我們會注意到一個名為 thymeleaf.pdf 的文件,位於用户的家目錄下,其內容如下所示:

如您所見,文本為綠色且居中對齊,這是根據我們定義的內聯 CSS 確定的。 這對於自定義我們的 PDF 文件來説是一個極其強大的工具。

請記住,Thymeleaf 完全與 Flying Saucer 解耦,這意味着我們可以使用任何其他模板引擎來創建 PDF 文件,例如 Apache FreeMarker。

4. 結論

在本快速教程中,我們學習瞭如何使用 Thymeleaf 作為模板引擎輕鬆生成 PDF 文件。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.