タイトル: JasperReport
SEOタイトル: JasperReports (Java 帳票ライブラリ) 完全ガイド
| この記事の要点 |
|
JasperReports とは
JasperReports は、Java アプリケーションから帳票 (PDF / Excel 等) を生成するための業界標準ライブラリ。Jaspersoft 社が 2001 年に公開し、現在はTIBCO Software (旧 Jaspersoft 親会社) が管理しています。バージョンは 2026 年時点でJasperReports Library 6.x。
主な特徴
| 項目 | 内容 |
|---|---|
| テンプレート形式 | XML (.jrxml) → コンパイル後 .jasper |
| 設計ツール | Jaspersoft Studio (Eclipse ベース、無料) |
| 出力フォーマット | PDF, XLS/XLSX, DOCX, PPTX, HTML, RTF, CSV, ODT, ODS |
| データソース | JDBC, JSON, XML, CSV, JavaBean Collection, Hibernate, MongoDB, REST |
| レイアウト機能 | サブレポート、グラフ、QR/バーコード、画像、表、クロス集計 |
| スクリプト | Java / Groovy 式を埋め込み可能 |
| 国際化 | 多言語ロケール、日本語フォント対応 |
| ライセンス | LGPL v3 |
製品エディション
| 製品 | 用途 | 価格 |
|---|---|---|
| JasperReports Library | Java 組込ライブラリ | 無料 (LGPL) |
| Jaspersoft Studio | テンプレート設計 GUI | 無料 (EPL) |
| JasperReports Server | Web で帳票実行 / 配信 | Community 無料 / Pro 有償 |
| Jaspersoft for Cloud | SaaS BI プラットフォーム | 有償 |
Maven 依存追加
net.sf.jasperreports
jasperreports
6.21.3
com.lowagie
itext
2.1.7
org.apache.poi
poi-ooxml
5.2.5
シンプルな帳票生成 (PDF)
import net.sf.jasperreports.engine.*;
import java.util.*;
import java.sql.*;
public class ReportSample {
public static void main(String[] args) throws Exception {
// 1. パラメータ
Map params = new HashMap<>();
params.put("ReportTitle", "売上レポート");
params.put("FromDate", "2026-01-01");
// 2. データソース (JDBC)
Connection conn = DriverManager.getConnection(
"jdbc:postgresql://localhost/mydb", "user", "pass");
// 3. コンパイル済テンプレート読み込み
JasperReport report = (JasperReport)
JRLoader.loadObject(new File("sales.jasper"));
// 4. レポート実行
JasperPrint print = JasperFillManager.fillReport(report, params, conn);
// 5. PDF 出力
JasperExportManager.exportReportToPdfFile(print, "output.pdf");
conn.close();
}
}
JRXML (テンプレート) の構造
= $P{FromDate}]]>
ID
名前
金額
JRXML を Java からコンパイル
// jrxml → jasper にコンパイル
JasperCompileManager.compileReportToFile("sales.jrxml", "sales.jasper");
// または毎回コンパイル (開発時)
JasperReport report = JasperCompileManager.compileReport("sales.jrxml");
Spring Boot との統合
@RestController
@RequiredArgsConstructor
public class ReportController {
private final DataSource dataSource;
@GetMapping(value = "/report.pdf", produces = MediaType.APPLICATION_PDF_VALUE)
public byte[] report() throws Exception {
JasperReport tpl = (JasperReport) JRLoader.loadObject(
new ClassPathResource("reports/sales.jasper").getFile());
try (Connection conn = dataSource.getConnection()) {
JasperPrint print = JasperFillManager.fillReport(
tpl, Map.of("ReportTitle", "Sales"), conn);
return JasperExportManager.exportReportToPdf(print);
}
}
}
サブレポート / グラフ
- サブレポート: 親レポート内に
を配置。明細を別レポート化 - グラフ: 棒 / 線 / 円 / 散布 / メーター。JFreeChart ベース
- クロス集計:
要素でピボットテーブル風出力 - バーコード: Barcode4J / Barbecue 連携
- QR コード: ZXing と連携
日本語フォントの注意
net.sf.jasperreports.extension.registry.factory.fonts=\
net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families=fonts/fontsfamily.xml
fonts/ipag.ttf
fonts/ipag.ttf
Identity-H
true
'IPA Gothic', sans-serif
JRXML 側で fontName="IPAGothic" を指定。PDF 埋め込み (pdfEmbedded=true) しないと文字化けの原因に。
主な競合 / 代替
| ツール | 言語 | 特徴 |
|---|---|---|
| JasperReports | Java | 業界標準、機能豊富、LGPL |
| BIRT | Java | Eclipse 系、無料、開発活発度低下 |
| Pentaho Reporting | Java | Hitachi Vantara、BI 統合 |
| iText | Java | PDF 直接生成、低レベル、AGPL/商用 |
| Apache PDFBox | Java | PDF 操作ライブラリ、レポート機能無し |
| SAP Crystal Reports | 独自 | 商用、企業向け定番 |
| FastReport | .NET / Java | 商用、デザインしやすい |
JasperReports Server (Web UI)
- JasperReports の Web 実行サーバ。Tomcat ベース
- ブラウザから帳票実行、PDF/Excel ダウンロード、スケジュール配信
- マルチテナント、ユーザロール、ダッシュボード
- Community 版 (無料) と Pro 版 (有償、SLA / 拡張機能)
FAQ
Q: 商用利用に LGPL の制約はある?
A: ライブラリとして動的リンクすれば自社製品ソースの開示義務なし。改変した JasperReports 自体は LGPL のまま公開義務あり。
Q: PDF が文字化けする
A: 日本語フォント未埋め込みが原因の 9 割。pdfFontName / pdfEncoding=Identity-H / pdfEmbedded=true を確認。
Q: 開発の活発度は?
A: TIBCO 傘下後はやや停滞気味だが、メジャーバージョンアップは継続中。エンタープライズ Java 帳票では依然デファクト。