Skip to content

設計思想

TCPDF-Next は TCPDF にインスパイアされていますが、モダンな PHP 時代に向けた完全なゼロからの書き直しです。フォークでも、段階的なアップグレードでもありません。次世代のアーキテクチャに基づいて構築された完全に新しいライブラリです。

オリジナルの TCPDF は 10 年以上にわたって PHP コミュニティに貢献してきました。しかし、単一ファイルで 30,000 行のアーキテクチャでは、モダンな PDF 生成の要求に対応できません:PDF 2.0 準拠、PAdES デジタル署名、PDF/A-4 アーカイブ、あるいは Laravel のようなフレームワークとの統合です。

TCPDF-Next は PHP 開発者が馴染みのあるコンセプト — addPage()cell()setFont() — を維持しつつ、2026 年の標準に対応するために内部をすべて再構築しています。

概要

オリジナル TCPDFTCPDF-Next
PHP バージョン5.x – 8.x8.5+ のみ
PDF 仕様1.4 – 1.72.0 (ISO 32000-2:2020)
アーキテクチャ単一の約 30K 行クラス213 ファイル、26 モジュール、12 コンポーザブルトレイト
型安全性なしPHPStan レベル 8、Backed Enum、Readonly クラス
署名基本的な PKCS#7PAdES B-B (Core) → B-LTA (Pro)
アーカイブPDF/A-1b (部分的)PDF/A-4 (ISO 19005-4:2020)
HTML レンダリング組み込み (CSS 制限あり)組み込み + Chrome CDP (完全な CSS3)
テスト約 50 テスト908 以上のテスト、28,881 以上のアサーション
拡張性モノリスのサブクラス化モジュラーエコシステム + 拡張 API

エコシステムアーキテクチャ

TCPDF-Next はモノリスではありません。それぞれ明確な責務を持つ 4 つのパッケージで構成されるモジュラーエコシステムです:

TCPDF-Next
Core
Artisan
Chrome CDP
Laravel
Framework
Pro
Enterprise
  • Core(148 ファイル) — PDF エンジン。ドキュメント生成、タイポグラフィ、バーコード、暗号化、PAdES B-B 署名に必要なすべてが含まれています。
  • Artisan(17 ファイル) — Chrome CDP 統合によるピクセルパーフェクトな HTML/CSS3 レンダリング。Form XObjects による、ラスタライズ画像ではないテキスト選択可能な PDF 出力。
  • Laravel(4 ファイル) — ゼロコンフィグのフレームワーク統合。Facade、HTTP レスポンス、キュージョブ、Octane 対応バインディング。
  • Pro(47 ファイル) — エンタープライズ機能。PAdES B-T から B-LTA、PDF/A-4、HSM 署名、特殊バーコード。

拡張 API はオープンです:サードパーティ開発者は、公開されたインターフェースPdfDocumentInterfaceSignerInterfaceFontManagerInterfaceHsmSignerInterface)を通じて Core にフックする独自の拡張を構築できます。

12 のコンポーザブルトレイト

Document クラスは単一のエントリポイントです。モノリシックなクラスの代わりに、その機能は 12 の専用トレイトから構成されています:

トレイト責務
HasMetadataタイトル、著者、件名、キーワード、言語
HasPagesページ管理、サイズ、マージン、ページグループ
HasTypographyフォント読み込み、サイズ、テキスト装飾、RTL、BiDi
HasColorsRGB、CMYK、スポットカラー、アルファ、ブレンドモード
HasTextOutputcell()、multiCell()、text()、write()、writeHtml()
HasDrawing図形、グラデーション、パターン、SVG、EPS、画像
HasTransforms拡大縮小、回転、移動、傾斜、反転
HasLayoutヘッダー、フッター、カラム、ブックレット
HasNavigationブックマーク、リンク、目次、注釈、ファイル添付
HasInteractiveフォームフィールド、レイヤー、テンプレート、JavaScript
HasSecurity暗号化、デジタル署名、タグ付きPDF、BiDi、リニアライズ
HasOutputoutput()、save()、getPdfData()、ストリーミング

すべてのパブリックメソッドはフルエントチェーンのために static を返します:

php
$pdf = Document::create()
    ->setTitle('Invoice')       // HasMetadata
    ->addPage()                 // HasPages
    ->setFont('Helvetica', '', 12) // HasTypography
    ->setFillColor(240, 240, 240)  // HasColors
    ->cell(0, 10, 'Hello')     // HasTextOutput
    ->save('invoice.pdf');      // HasOutput

次のステップ

LGPL-3.0-or-later ライセンスの下で公開されています。