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-pdfpom.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から入手できます。