CodeIgniter 4 向け NextPDF の構成
構成は NextPDF\CodeIgniter\Config\NextPdf(CodeIgniter の BaseConfig サブクラス)にあります。値を上書きするには、app/Config/ でクラスを拡張するか、nextpdf. プレフィックスを付けた .env キーを設定します。デフォルト値だけで、追加の構成なしでも動作します。
概念の概要
「概念の概要」という見出しのセクションNextPdf は型付きの BaseConfig です。これは意図的に final ではありません。CodeIgniter では、アプリケーション側の構成がパッケージクラスを拡張するのが慣例であり、これによりアプリケーションはデフォルト値を上書きできます。CodeIgniter が構成を組み立てる際、BaseConfig はすべての public プロパティについて、環境による上書きを解決(resolve)します。この解決には、ネストされた配列キーも含まれます。
デフォルトのフォントパスとキャッシュパスは、CodeIgniter の WRITEPATH 定数を使用します。つまり WRITEPATH . 'fonts' と WRITEPATH . 'cache/nextpdf' です。
以下の各キーは NextPdf の public プロパティです。デフォルト値は、パッケージのソースで検証済みの値です。
ページとドキュメントのデフォルト
「ページとドキュメントのデフォルト」という見出しのセクション| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
pageFormat | string | A4 | ページ形式。 |
orientation | string | P | P は縦向き、L は横向き。 |
unit | string | mm | 測定単位。 |
defaults.creator | string | NextPDF | PDF の creator メタデータ。 |
defaults.author | string | '' | author メタデータ。空の場合はスキップ。 |
defaults.language | string | en | ドキュメントの言語タグ。 |
defaults.margin_top | float | 10.0 | 上余白。 |
defaults.margin_right | float | 10.0 | 右余白。 |
defaults.margin_bottom | float | 10.0 | 下余白。 |
defaults.margin_left | float | 10.0 | 左余白。 |
defaults.font_family | string | dejavusans | デフォルトのフォントファミリ。 |
defaults.font_size | float | 12.0 | デフォルトのフォントサイズ。 |
defaults.trim_box | list<float>|null | null | 設定時のトリムボックス。 |
defaults.bleed_box | list<float>|null | null | 設定時のブリードボックス。 |
パッケージは
defaults.creatorとdefaults.languageをすべてのドキュメントに適用します。defaults.authorは、その値が空でない場合にのみ適用されます。
パスとキャッシュ
「パスとキャッシュ」という見出しのセクション| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
fontsPath | string | WRITEPATH/fonts | フォントファイルのディレクトリ。 |
cachePath | string | WRITEPATH/cache/nextpdf | キャッシュディレクトリ。 |
preloadFonts | list<string> | [] | 起動時にウォームアップするフォントの絶対パス。 |
imageCacheMb | int | 50 | 画像 LRU キャッシュの上限(MB)。 |
fontCacheLocking | bool | true | ウォームアップ後のフォントキャッシュロック。 |
フォントレジストリは、
fontsPathがストリームラッパー(://)またはヌルバイトを含む場合、その値を拒否します。この拒否により実行時エラーが発生します。 /integrations/codeigniter/security-and-operations/. を参照してください。
アーカイブとカラー(NextPDF Pro)
「アーカイブとカラー(NextPDF Pro)」という見出しのセクション| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
pdfa | string|null | null | PDF/A のバージョン(4、4e、4f)。 |
iccProfile.rgb | string|null | null | RGB ICC プロファイルのパス。 |
iccProfile.cmyk | string|null | null | CMYK ICC プロファイルのパス。 |
pdfaは、NextPDF Pro がインストールされ、 アーカイブ機能が利用可能な場合にのみ有効になります。コアのみの環境では、このキーは無視されます。
デジタル署名(NextPDF Pro / Enterprise)
「デジタル署名(NextPDF Pro / Enterprise)」という見出しのセクション| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
signature.enabled | bool | false | 署名サービスの有効化。 |
signature.certificate | string|null | null | 証明書ファイルのパス。 |
signature.private_key | string|null | null | 秘密鍵ファイルのパス。 |
signature.password | string | '' | 秘密鍵のパスワード。 |
signature.extra_certs | list<string> | [] | 追加のチェーン証明書へのパス。 |
signature.level | string | B-B | 署名レベルの識別子。 |
Services::pdfSigner()は、signature.enabledがtrueで、かつsignature.certificateが空でない場合を除き、nullを返します。デフォルトのレベルはB-Bです。NextPDF Pro は B-B ベースライン署名を提供します。長期検証レベルは、別個の Enterprise 機能です。それらはここではなく、Premium リファレンスに記載されています。PAdES B-T は Core エンジンによって生成されます。CodeIgniter 統合自体が B-T を追加することはなく、Pro が提供するのは B-B ベースラインのみです。このドキュメントは、Pro B-T が提供される場合に更新されます。
タイムスタンプ局
「タイムスタンプ局」という見出しのセクション| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
tsa.url | string|null | null | TSA エンドポイントの URL。 |
tsa.username | string | '' | TSA の Basic 認証ユーザー名。 |
tsa.password | string | '' | TSA の Basic 認証パスワード。 |
tsa.cert | string|null | null | クライアント証明書のパス。 |
tsa.key | string|null | null | クライアント鍵のパス。 |
tsa.timeout | int | 30 | リクエストのタイムアウト(秒)。 |
tsa.pinned_public_keys | list<string> | [] | ピン留めされた TSA 公開鍵。 |
tsa.warn_on_key_rotation | bool | true | TSA の鍵ローテーション時の警告。 |
tsa.allow_insecure_http | bool | false | TSA への平文 HTTP の許可。 |
Services::tsaClient()は、tsa.urlがnullまたは空文字列の場合にnullを返します。タイムスタンプを必要とする署名レベルが選択された場合、 署名処理側は自動的に TSA クライアントを接続します。
OCSP キャッシュ
「OCSP キャッシュ」という見出しのセクション| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
ocspCache.enabled | bool | true | OCSP レスポンスキャッシュの有効化。 |
ocspCache.ttl | int | 86400 | キャッシュの TTL(秒単位)。 |
ocspCache.directory | string|null | null | キャッシュディレクトリ。null の場合はエンジンのデフォルト。 |
Chrome HTML レンダラー(NextPDF Artisan)
「Chrome HTML レンダラー(NextPDF Artisan)」という見出しのセクション| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
artisan.chrome_binary | string|null | null | Chrome/Chromium バイナリのパス。 |
artisan.render_timeout | int | 30 | レンダリングのタイムアウト(秒)。 |
artisan.default_css | string | '' | デフォルトのスタイルシート。 |
artisan.no_sandbox | bool | false | Chrome に渡す --no-sandbox。 |
artisan.max_html_size | int | 5000000 | 入力 HTML の最大サイズ(バイト)。 |
ドキュメントに対して Chrome レンダラーが構成されるのは、
artisan.chrome_binaryが設定され、かつnextpdf/artisanがインストールされている場合のみです。
.env による上書き
「.env による上書き」という見出しのセクションBaseConfig は、プロパティごとに環境による上書きを解決します。ルックアップキーは、小文字の短いクラス名 nextpdf にプロパティパスを続けた形式です。ネストされた配列キーはドットで指定します。ドット形式とアンダースコア形式の両方を受け付けます。
nextpdf.fontsPath = /var/www/writable/fontsnextpdf.imageCacheMb = 100nextpdf.signature.enabled = truenextpdf.signature.certificate = /etc/nextpdf/cert.pemnextpdf.signature.private_key = /etc/nextpdf/key.pemnextpdf.tsa.url = https://tsa.example.com/timestampnextpdf.artisan.chrome_binary = /usr/bin/chromiumnextpdf.defaults.creator = Acme Billingnextpdf.defaults.language = zh-TWプレフィックスは小文字の短いクラス名です。クラスが NextPdf と記述されていても、nextpdf のままです。完全修飾形式(NextPDF\CodeIgniter\Config\NextPdf.fontsPath)も受け付けられます。
クラス拡張による上書き
「クラス拡張による上書き」という見出しのセクション型付きでバージョン管理された構成にするには、app/Config/ でパッケージクラスを拡張します。CodeIgniter は、パッケージのデフォルトの代わりにアプリケーションクラスを読み込みます。このファイルはクラスを宣言し、副作用を生じさせません。これにより、ファイルはシンボルを宣言するか副作用のあるロジックを実行するかのいずれかであり、その両方を行わないという PSR-1 の想定(PSR-1 §x1.x1.p3)に整合した状態が保たれます。
<?php
declare(strict_types=1);
namespace Config;
use NextPDF\CodeIgniter\Config\NextPdf as BaseNextPdf;
final class NextPdf extends BaseNextPdf{ public int $imageCacheMb = 100;
public string $fontsPath = WRITEPATH . 'fonts';
/** @var array{creator: string, author: string, language: string, margin_top: float, margin_right: float, margin_bottom: float, margin_left: float, font_family: string, font_size: float, trim_box: list<float>|null, bleed_box: list<float>|null} */ public array $defaults = [ 'creator' => 'Acme Billing', 'author' => 'Acme, Inc.', 'language' => 'en', 'margin_top' => 12.0, 'margin_right' => 12.0, 'margin_bottom' => 12.0, 'margin_left' => 12.0, 'font_family' => 'dejavusans', 'font_size' => 11.0, 'trim_box' => null, 'bleed_box' => null, ];}エッジケースと注意点
「エッジケースと注意点」という見出しのセクション- 単一のネストされたキーを
.envで上書きすると、そのキーのみが上書きされ、配列の残りはデフォルトのままになります。 .envの値は文字列です。CodeIgniter はtrue/falseと数値文字列をキャストします。リテラル文字列のまま保持する必要がある値は、引用符で囲んでください。- 部分的な
defaults配列でクラスを拡張すると、配列全体が置き換えられます。上記のように、すべてのキーを含めてください。
セキュリティに関する注意
「セキュリティに関する注意」という見出しのセクション証明書と鍵のパスは、ソース管理の外に置いてください。それらは .env またはシークレットマネージャーを通じて指定してください。本番環境では、tsa.allow_insecure_http は false のままにしておく必要があります。/integrations/codeigniter/security-and-operations/. を参照してください。
- アプリケーションの構成拡張ファイルは、1 つのクラスを宣言し、副作用はありません(PSR-1 §x1.x1.p3)。
商用に関する背景
「商用に関する背景」という見出しのセクションNextPDF コアは Apache-2.0 です。signature.* および pdfa キーは、NextPDF Pro または Enterprise がインストールされている場合にのみ有効になります。CodeIgniter パッケージは、対応するサービスメソッドを公開します。これらのメソッドは、対応する Premium パッケージがインストールされるまで null を返します。</get-license/?intent=codeigniter-signing> を参照してください。
- /integrations/codeigniter/install/ — パッケージのインストール。
- /integrations/codeigniter/quickstart/ — 最初の PDF。
- /integrations/codeigniter/production-usage/ — DI で配線されたコントローラーとキュージョブ。
- /integrations/codeigniter/security-and-operations/ — 署名とパス構成の堅牢化。