ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
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 依存追加
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.21.3</version>
</dependency>
<!-- PDF 出力用 -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
<!-- Excel 出力用 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.5</version>
</dependency>
シンプルな帳票生成 (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<String, Object> 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 (テンプレート) の構造
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
name="sales" pageWidth="595" pageHeight="842" columnWidth="555">
<parameter name="ReportTitle" class="java.lang.String"/>
<queryString>
<![CDATA[SELECT id, name, amount FROM sales WHERE date >= $P{FromDate}]]>
</queryString>
<field name="id" class="java.lang.Long"/>
<field name="name" class="java.lang.String"/>
<field name="amount" class="java.math.BigDecimal"/>
<title>
<band height="50">
<textField>
<reportElement x="0" y="0" width="555" height="40"/>
<textElement textAlignment="Center"><font size="20"/></textElement>
<textFieldExpression><![CDATA[$P{ReportTitle}]]></textFieldExpression>
</textField>
</band>
</title>
<columnHeader>
<band height="20">
<staticText><reportElement x="0" y="0" width="100" height="20"/>
<text>ID</text></staticText>
<staticText><reportElement x="100" y="0" width="300" height="20"/>
<text>名前</text></staticText>
<staticText><reportElement x="400" y="0" width="155" height="20"/>
<text>金額</text></staticText>
</band>
</columnHeader>
<detail>
<band height="20">
<textField><reportElement x="0" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression></textField>
<textField><reportElement x="100" y="0" width="300" height="20"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression></textField>
<textField><reportElement x="400" y="0" width="155" height="20"/>
<textFieldExpression><![CDATA[$F{amount}]]></textFieldExpression></textField>
</band>
</detail>
</jasperReport>
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);
}
}
}
サブレポート / グラフ
- サブレポート: 親レポート内に
<subreport>を配置。明細を別レポート化 - グラフ: 棒 / 線 / 円 / 散布 / メーター。JFreeChart ベース
- クロス集計:
<crosstab>要素でピボットテーブル風出力 - バーコード: Barcode4J / Barbecue 連携
- QR コード: ZXing と連携
日本語フォントの注意
<!-- jasperreports_extension.properties -->
net.sf.jasperreports.extension.registry.factory.fonts=\
net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families=fonts/fontsfamily.xml<!-- fonts/fontsfamily.xml -->
<fontFamilies>
<fontFamily name="IPAGothic">
<normal>fonts/ipag.ttf</normal>
<bold>fonts/ipag.ttf</bold>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'IPA Gothic', sans-serif</export>
</exportFonts>
</fontFamily>
</fontFamilies>
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 帳票では依然デファクト。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
同階層のページ
- Hibernate
- JasperReport
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?