OSS探訪

OpenPDF — Java/KotlinからPDF生成・編集・HTML変換・レンダリングまで扱うiText系OSSライブラリ

OSS健全度 82
スコアの見方

発掘スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした独自指標(上限なし)。成長モメンタムは観測期間内の同スコアの差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
4,366
主要言語
Java
ライセンス
MPL-2.0 OR LGPL-2.1+
リポジトリ最終更新
2026/08/05

概要

OpenPDFは、JavaでPDFの作成・編集・暗号化・テキスト抽出・レンダリングを行い、HTML/CSSからのPDF生成やKotlin向けAPIも提供するオープンソースライブラリです。iText 4系の系譜を持ちながら、PDF 2.0対応やBrotli圧縮、独立したrenderer/htmlモジュールまで拡張されています。最新安定版3.0.5ではJava 21以降が前提で、3.0系からJavaパッケージ名も`org.openpdf`へ移行しています。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

PDFの新規生成だけでなく、既存PDFの編集・暗号化・テキスト/画像処理までJava APIで扱う

公式READMEは、PDFの新規作成、既存PDFへのページ追加・削除や内容変更、テキストとフォント、画像・グラフィックス、表、暗号化、ページレイアウト、テキスト抽出を主要機能として挙げています。帳票出力だけでなく、既存文書の加工やサーバー側PDF処理をJavaコードへ組み込めるライブラリです。

出典:[2]

HTML→PDF、PDF→画像、Kotlin支援を別モジュールとして持ち、用途ごとに依存を分けられる

openpdf-htmlはFlying Saucer由来のHTML/CSS→PDF変換、openpdf-rendererはPDFページの画像化やSwing/JavaFX等での表示、openpdf-kotlinはKotlinからPDFを作りやすくするモジュールです。親POMではcore、html、renderer、Kotlin、fonts、toolbox等を別Maven moduleとして管理しており、単一の巨大APIではなく必要な機能を分けて採用できます。

出典:[2][3]

PDF 2.0、Brotli stream、署名系依存など、PDF仕様と実運用の機能を継続的に更新する

READMEはPDF 2.0(ISO 32000-2)対応を掲げ、Brotliで圧縮されたPDF streamの読み書きにも対応しています。3.0.5のリリースではBrotli対応に加え、暗号化・署名処理の更新やrenderer統合も含まれています。電子署名ではBouncy Castleが推奨依存として案内されており、生成・表示だけでなく文書セキュリティまで扱える範囲があります。

出典:[2][5]

Java/JVMの業務システムで、帳票・請求書・レポート・既存PDF加工をアプリ内部へ組み込みたい場合に

JavaやKotlinで動くバックエンドからPDFを直接生成したいシステム、HTMLテンプレートをPDF帳票へ変換したいサービス、既存PDFの結合・編集・暗号化・プレビューを自前アプリへ組み込みたい場合に向きます。iText 2/4系の古いコードを持つシステムでは、OpenPDFへの移行経路が用意されている点も比較材料になります。

OpenPDF 3.0はJava 21+と`org.openpdf`へのpackage移行が前提。旧版からの更新は単純なversion bumpではない

READMEでは2.1.x以降がJava 21+、2.0.xがJava 17+、1.4.xがJava 11+、1.3.xがJava 8+と整理されています。さらにOpenPDF 3.0ではJava package名がcom.lowagieからorg.openpdfへ変更されています。長期運用中のJVMアプリでは、JDK更新、import変更、依存moduleの差、iText互換コードの動作確認を含む移行計画が必要です。

最新安定版は2026年5月22日公開の3.0.5で、masterの親POMは3.0.6-SNAPSHOTです。本番依存ではREADMEやmasterのsnapshot値ではなく、Maven Central/正式releaseのversionを固定して評価する方が安全です。

出典:[2][3][5]

PDF/HTML入力はsandbox化されない。外部URL・file path・font・巨大PDFをアプリ側で検証する

Security PolicyはOpenPDFをsandboxed/hardened環境ではないと明記し、file path、image source、font名、HTML等を入力検証なしで処理すると説明しています。攻撃者が入力を制御できる場合、local file access、file URL経由のnetwork access、path traversal、SSRF、危険なbase64、巨大・不正PDFによるmemory exhaustionが問題になり得ます。

特にHTML→PDFや外部画像を扱うサービスでは、HTML sanitizer、URL/pathのallowlist、font制限、upload size制限、必要に応じたcontainer/sandbox実行をアプリ側で実装する必要があります。またcoreはMPL-2.0 OR LGPL-2.1+のdual licenseですが、openpdf-htmlopenpdf-rendererはLGPL-2.1のみとREADMEに記載されているため、配布形態に応じて利用moduleごとのlicense確認が必要です。

出典:[4][2][3]

参考にした公式資料

  1. [1]LibrePDF/OpenPDF — GitHub repository metadata(2026-09-15)
  2. [2]LibrePDF/OpenPDF — README(2026-09-15)
  3. [3]LibrePDF/OpenPDF — pom.xml(2026-09-15)
  4. [4]LibrePDF/OpenPDF — Security Policy(2026-09-15)
  5. [5]LibrePDF/OpenPDF — OpenPDF 3.0.5 release(2026-09-15)
編集部からの補足

JavaのPDF帳票ライブラリとしてだけでなく、HTML→PDF・renderer・Kotlin・PDF 2.0まで一つのプロジェクトで選べる点を評価しました。3.0系ではJava 21+とorg.openpdfへのpackage移行があり、untrustedなHTML/PDFを扱う場合はSSRF・file access・DoS対策をアプリ側で担う必要があります。

3ステップで試す

  1. 1

    ソースを取得

    git clone --depth 1 https://github.com/LibrePDF/OpenPDF.git
  2. 2

    リポジトリへ移動

    cd OpenPDF
  3. 3

    公式手順を確認

    READMEのInstallation / Quick Start / Getting Startedにある公式コマンドを続けて実行してください。

    find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
公式READMEで確認

成長

成長の推移 · 直近30日

4,366 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
38

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • pdf
  • pdf-generation
  • java
  • itext
  • openpdf
  • kotlin
  • flyingsaucer
Stars
4,366
Forks
713
Watchers
72
Open Issues
151
主要言語
Java
ライセンス
MPL-2.0 OR LGPL-2.1+
リポジトリ最終更新
2026/08/05
情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。