Thymeleafを使用したPDFファイルの生成
1. 概要
このチュートリアルでは、 Thymeleaf をテンプレートエンジンとして使用してPDFを生成する方法を、簡単で実用的な例を通じて学習します。
2. Mavenの依存関係
まず、Thymeleaf依存関係を追加しましょう。
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
Thymeleaf自体は単なるテンプレートエンジンであり、それ自体でPDFを生成することはできません。 この目的のために、flying-saucer-pdfをpom.xmlに追加します。
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.1.20</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>
次に、テンプレートを解析してHTML Stringを返す単純な関数parseThymeleafTemplateを作成します。
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はFlyingSaucerから完全に切り離されていることを覚えておく必要があります。つまり、 ApacheFreeMarkerなどの他のテンプレートエンジンを使用してPDFを作成できます。
4. 結論
このクイックチュートリアルでは、Thymeleafをテンプレートエンジンとして使用してPDFを簡単に生成する方法を学びました。
いつものように、コードはGitHubでから入手できます。