1. Обзор
В этом руководстве мы узнаем, как создавать PDF-файлы, используя Thymeleaf в качестве механизма шаблонов, на быстром и практическом примере.
2. Зависимости Maven
Во-первых, давайте добавим нашу зависимость Thymeleaf :
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
Thymeleaf сам по себе является всего лишь механизмом шаблонов, и он не может генерировать PDF-файлы самостоятельно. Для этого мы добавим летающую тарелку-pdf
в наш файл pom.xml
:
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.1.20</version>
</dependency>
3. Создание PDF-файлов
Далее давайте создадим простой HTML-шаблон Thymeleaf — 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 :
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", "ForEach");
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. Вывод
В этом кратком руководстве мы узнали, как легко создавать PDF-файлы, используя Thymeleaf в качестве механизма шаблонов.
Как всегда, код доступен на GitHub .