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 文件。