JavaでPDFを自動生成する方法【iTextの使い方入門】

はじめに

Javaアプリケーションから帳票・契約書・レポートなどをPDF形式で自動生成したい場面は多くあります。この記事では、Java向けのPDF生成ライブラリ「iText 7」を使って、基本的なPDF出力を行う方法を解説します。

  • テキストの挿入
  • 表の作成
  • 画像の挿入
  • フォント設定
  • ファイル保存

iTextとは?

iTextはJavaでPDFファイルを生成・操作できる強力なライブラリです。

  • 商用利用にはライセンスが必要(LGPL/MPL → AGPL)
  • 学習や個人利用での試用は無料
  • MavenやGradleから簡単に導入可能

開発環境

  • Java 11 以上
  • iText 7 Core(オープンソース版)
  • Maven使用(手動導入も可)

Maven依存関係(pom.xml)

<dependency>
  <groupId>com.itextpdf</groupId>
  <artifactId>itext7-core</artifactId>
  <version>8.0.2</version>
  <type>pom</type>
</dependency>

PDFの基本作成

import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

public class BasicPDF {
  public static void main(String[] args) {
    try {
      String dest = "sample.pdf";
      PdfWriter writer = new PdfWriter(dest);
      PdfDocument pdf = new PdfDocument(writer);
      Document document = new Document(pdf);
      document.add(new Paragraph("こんにちは、PDFの世界!"));
      document.close();
      System.out.println("PDF作成完了: " + dest);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

表(テーブル)の追加

import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.element.Cell;

Table table = new Table(2);
table.addCell(new Cell().add("氏名"));
table.addCell(new Cell().add("役職"));
table.addCell("田中太郎");
table.addCell("マネージャー");
document.add(table);

画像の挿入

import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.layout.element.Image;

Image img = new Image(ImageDataFactory.create("logo.png"));
document.add(img);

フォントのカスタマイズ(日本語対応)

import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.font.PdfFont;

PdfFont font = PdfFontFactory.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H", true);
document.setFont(font);
document.add(new Paragraph("日本語のフォントも使用可能"));


まとめ

iTextを使えば、Javaで本格的なPDF出力が可能になります。帳票・レポート・契約書・グラフ付き報告などにも応用でき、業務の自動化・効率化に大きく貢献します。

タイトルとURLをコピーしました