コンテンツにスキップ

TCPDF 互換開発者ガイド

互換アダプターは移行レイヤーです。レガシーな動作を隠すのではなく、見える形にすることを目的としています。アプリケーションを稼働させたまま、価値の高いパスをネイティブの NextPDF API へ移行するために使用します。

このガイドは、TCPDF 形式のレガシーコードを保守する場合、アダプターのカバレッジを追加する場合、またはネイティブの NextPDF API への段階的な移行を計画する場合に使用します。

レイヤー所有者責務ここに置かないもの
レガシーアプリケーションアプリケーション移行中も既存の TCPDF 形式の呼び出しを動かし続けます。ネイティブの NextPDF API を使用すべき新しい PDF 機能。
アダプターシェルnextpdf/compat-legacyTCPDF 形式のクラスと共有互換性ステートを公開します。大規模なメソッドファミリーや変換ロジック。
コンサーントレイトnextpdf/compat-legacyレガシーなメソッドファミリー(テキスト、フォント、画像、セキュリティ、フォーム、ページ)をグループ化します。ファミリーをまたぐ出力ポリシー。
ブリッジクラスnextpdf/compat-legacyレガシーの引数、出力先、色、単位、フォーマットを変換します。ビジネス固有の動作。
コアエンジンnextpdf/nextpdfネイティブのドキュメントを生成します。レガシー互換性に関する保証。
ステージ動作開発者の対応
ブートストラップオプションのレガシーブートストラップが互換用の名前を公開します。レガシーコードが TCPDF のシンボルを必要とする箇所でのみ使用します。
構築レガシーのコンストラクター引数は、コアのドキュメント設定に適合されます。移行中はコンストラクター入力を安定させておきます。
メソッド呼び出しサポートされるメソッドは、コンサーンとブリッジを通じて NextPDF の動作にマッピングされます。パリティを前提にする前にメソッドのカバレッジを確認します。
サポートされない機能サポートされない動作では、明示的な互換性例外がスローされます。呼び出しを置き換えるか、アプリケーションコードの背後に隔離します。
出力出力ブリッジは、レガシーの出力先の動作を NextPDF の出力にマッピングします。ファイル名とストレージのルートを検証します。

まず、アプリケーション内のすべての TCPDF メソッド呼び出しを収集します。動作を変更する前に、各呼び出しを分類します。

分類意味対応
サポートされるアダプターメソッドメソッドはサポート対象として文書化され、テストもあります。一時的に維持し、その領域を変更する際に移行します。
部分的なアダプターメソッドメソッドは存在しますが、その動作はレガシーな TCPDF と完全には一致しません。フィクスチャテストを追加し、出力を手動で検証します。
明示的にサポートされないメソッドアダプターは互換性例外をスローします。ネイティブの NextPDF に置き換えるか、機能を削除します。
ビジネス固有のラッパーアプリケーションがすでに TCPDF 呼び出しをラップしています。まずラッパーの内部を移行します。
コンプライアンスに影響する呼び出し署名、暗号化、タグ付け、PDF/A、アクセシビリティ、または請求書フローに関わる呼び出し。専用の検証とともに、ネイティブの NextPDF API へ移行します。

互換性サポートは、その動作を担当する最小のメソッドファミリーに追加します。

変更の種類実装する場所必須のテスト
テキスト出力メソッドConcerns\AdaptsTextOutput またはフォントコンサーン。レガシーフィクスチャとネイティブ出力のアサーション。
ページまたはマージンのメソッドページ、位置決め、またはマージンのコンサーン。座標変換とページステートのテスト。
画像または描画のメソッド画像、描画、色、またはグラデーションのコンサーン。入力検証と visual/structural 出力のテスト。
出力先OutputBridge出力先のマッピングと安全でないパスのテスト。
サポートされない機能例外ファクトリーまたはメソッドカバレッジ表。例外の型とメッセージのテスト。

コンサーントレイトがそのファミリーを担当している場合、大規模なメソッドをアダプターシェルへ直接追加しないでください。

まずアダプターで安定させ、そのうえで安定したワークフローをネイティブ API へ移行します。

<?php
// Temporary compatibility code.
$pdf = new \NextPDF\Compat\Tcpdf\TCPDF();
$pdf->AddPage();
$pdf->SetFont('dejavusans', '', 12);
$pdf->Cell(0, 10, 'Invoice 1234');
// Target native shape.
$document = \NextPDF\Core\Document::createStandalone();
$document->addPage()
->setFont('dejavusans', '', 12)
->cell(0, 10, 'Invoice 1234');

移行は、小さな動作変更の連続として扱います。1 つの高リスクなセクションをネイティブ API へ移行する間も、ページでは引き続きアダプターを使用できます。

拡張ポイント用途制約
AdaptationConfig移行中のアダプターの動作を制御します。デフォルト値は、レビュー済みで明示的な状態に保ちます。
コンサーントレイトテキスト、フォーム、画像、セキュリティなどのメソッドファミリーをグループ化します。アダプターシェルではなく、適切なコンサーンにメソッドを追加します。
ブリッジクラスレガシー引数の形式をコアの値に変換します。ブリッジの動作は移行テストでカバーし続けます。
CompatAdapterInterfaceツール向けのアダプターレベル抽象化。新しいコードでは、ネイティブなコアコントラクトの代替として使用しないでください。
メソッドカバレッジ表開発者向けのサポート台帳。サポート状況が変わったら更新します。
  1. アダプターをインストールし、レガシーテストスイートを変更せずに実行します。
  2. 次に、メソッドカバレッジを開き、呼び出されているすべてのメソッドを分類します。
  3. サポートされないメソッドを最初に置き換えます。
  4. 使用頻度の高いパス、またはコンプライアンスに影響するパスをネイティブのコア API へ移行します。
  5. 移行したすべてのメソッドファミリーにフィクスチャのカバレッジを追加します。
  6. アプリケーションのどのエントリーポイントも依存しなくなったら、ブートストラップのエイリアスを削除します。
障害対応すべき場所推奨される対応
サポートされないメソッドアダプター例外。呼び出しを置き換えるか、アプリケーションアダプターの背後に分離します。
部分的なレイアウトのパリティ移行テストと目視レビュー。ロールアウト前に、許容する差異を文書化します。
安全でない出力先OutputBridge とアプリケーションのストレージポリシー。安全でないパスを拒否し、ネイティブの出力 API を優先します。
セキュリティ機能の不一致ネイティブ移行計画。規制対象の出力では、互換性のみの動作を出荷しないでください。
ブートストラップのエイリアスの衝突アプリケーションのブートストラップ。グローバルエイリアスを削除するか、レガシーのエントリーポイントにスコープを限定します。
コンサーンデフォルトオーバーライドするタイミング
サポートされないメソッド明示的な例外をスローします。本番環境ではこれを弱めないでください。
レガシーのデフォルトaggregate(集約)先は LegacyDefaults です。既知の移行動作に限ってオーバーライドします。
出力マッピング処理は OutputBridge を経由します。移行後はネイティブの出力 API を使用します。
カバレッジのソースメソッドカバレッジのページとテスト。アダプターをアップグレードするたびに、カバレッジチェックを再実行します。
ストリクトモード移行監査中は有効に保ちます。文書化されたレガシー互換性期間に限って無効にします。
  • 移行した各メソッドファミリーについて、レガシーフィクスチャを維持します。
  • レガシーメソッドを置き換える前に、ネイティブの NextPDF テストを 1 つ追加します。
  • サポートされないメソッドが文書化された例外をスローすることをアサートします。
  • 正確なバイト単位の一致が現実的な移行目標でない場合は、出力の構造を比較します。
  • アダプターメソッドを追加または変更した後に、メソッドカバレッジチェックを実行します。
  • レガシーコードが使用するすべての出力先について、ストレージパスのテストを追加します。