Generating PDF Files Using Thymeleaf
1.概述
在本教程中,我们将通过一个简单实用的示例来学习如何使用Thymeleaf作为模板引擎来生成PDF。
2. Maven依赖
首先,让我们添加Thymeleaf依赖项:
1 2 3 4 5 | <dependency> <groupId>org.thymeleaf</groupId> thymeleaf</artifactId> <version>3.0.11.RELEASE</version> </dependency> |
Thymeleaf本身只是一个模板引擎,它不能自行生成PDF。为此,我们将把flying-saucer-pdf添加到我们的pom.xml中:
1 2 3 4 5 | <dependency> <groupId>org.xhtmlrenderer</groupId> flying-saucer-pdf</artifactId> <version>9.1.20</version> </dependency> |
3.生成PDF
接下来,让我们创建一个简单的Thymeleaf HTML模板– thymeleaf_template.html:
1 2 3 4 5 6 7 8 9 | <html xmlns:th="http://www.thymeleaf.org"> <p> <span th:text="'Welcome to ' + ${to} + '!'"></span> </p> </html> |
然后,我们将创建一个简单的函数parseThymeleafTemplate,它将解析我们的模板并返回一个HTML字符串:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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写入我们的主文件夹:
1 2 3 4 5 6 7 8 9 10 11 | 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。
与往常一样,该代码可在GitHub上获得。