diff --git a/pdf/pom.xml b/pdf/pom.xml
index d148aa1670..463c88948d 100644
--- a/pdf/pom.xml
+++ b/pdf/pom.xml
@@ -60,6 +60,16 @@
poi-ooxml
${poi-ooxml.version}
+
+ org.thymeleaf
+ thymeleaf
+ 3.0.11.RELEASE
+
+
+ org.xhtmlrenderer
+ flying-saucer-pdf
+ 9.1.20
+
diff --git a/pdf/src/main/java/com/baeldung/pdf/PDFThymeleafExample.java b/pdf/src/main/java/com/baeldung/pdf/PDFThymeleafExample.java
new file mode 100644
index 0000000000..2e1df1d320
--- /dev/null
+++ b/pdf/src/main/java/com/baeldung/pdf/PDFThymeleafExample.java
@@ -0,0 +1,48 @@
+package com.baeldung.pdf;
+
+import com.lowagie.text.DocumentException;
+import org.thymeleaf.TemplateEngine;
+import org.thymeleaf.context.Context;
+import org.thymeleaf.templatemode.TemplateMode;
+import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
+import org.xhtmlrenderer.pdf.ITextRenderer;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class PDFThymeleafExample {
+
+ public static void main(String[] args) throws IOException, DocumentException {
+ PDFThymeleafExample thymeleaf2Pdf = new PDFThymeleafExample();
+ String html = thymeleaf2Pdf.parseThymeleafTemplate();
+ thymeleaf2Pdf.generatePdfFromHtml(html);
+ }
+
+ public void generatePdfFromHtml(String html) throws IOException, DocumentException {
+ 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();
+ }
+
+ 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.com");
+
+ return templateEngine.process("thymeleaf_template", context);
+ }
+}
diff --git a/pdf/src/main/resources/thymeleaf_template.html b/pdf/src/main/resources/thymeleaf_template.html
new file mode 100644
index 0000000000..3e856367cc
--- /dev/null
+++ b/pdf/src/main/resources/thymeleaf_template.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file