コンテンツにスキップ

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 プロパティです。デフォルト値は、パッケージのソースで検証済みの値です。

キーデフォルト説明
pageFormatstringA4ページ形式。
orientationstringPP は縦向き、L は横向き。
unitstringmm測定単位。
defaults.creatorstringNextPDFPDF の creator メタデータ。
defaults.authorstring''author メタデータ。空の場合はスキップ。
defaults.languagestringenドキュメントの言語タグ。
defaults.margin_topfloat10.0上余白。
defaults.margin_rightfloat10.0右余白。
defaults.margin_bottomfloat10.0下余白。
defaults.margin_leftfloat10.0左余白。
defaults.font_familystringdejavusansデフォルトのフォントファミリ。
defaults.font_sizefloat12.0デフォルトのフォントサイズ。
defaults.trim_boxlist<float>|nullnull設定時のトリムボックス。
defaults.bleed_boxlist<float>|nullnull設定時のブリードボックス。

パッケージは defaults.creatordefaults.language をすべてのドキュメントに適用します。defaults.author は、その値が空でない場合にのみ適用されます。

キーデフォルト説明
fontsPathstringWRITEPATH/fontsフォントファイルのディレクトリ。
cachePathstringWRITEPATH/cache/nextpdfキャッシュディレクトリ。
preloadFontslist<string>[]起動時にウォームアップするフォントの絶対パス。
imageCacheMbint50画像 LRU キャッシュの上限(MB)。
fontCacheLockingbooltrueウォームアップ後のフォントキャッシュロック。

フォントレジストリは、fontsPath がストリームラッパー(://)またはヌルバイトを含む場合、その値を拒否します。この拒否により実行時エラーが発生します。 /integrations/codeigniter/security-and-operations/. を参照してください。

キーデフォルト説明
pdfastring|nullnullPDF/A のバージョン(44e4f)。
iccProfile.rgbstring|nullnullRGB ICC プロファイルのパス。
iccProfile.cmykstring|nullnullCMYK ICC プロファイルのパス。

pdfa は、NextPDF Pro がインストールされ、 アーカイブ機能が利用可能な場合にのみ有効になります。コアのみの環境では、このキーは無視されます。

キーデフォルト説明
signature.enabledboolfalse署名サービスの有効化。
signature.certificatestring|nullnull証明書ファイルのパス。
signature.private_keystring|nullnull秘密鍵ファイルのパス。
signature.passwordstring''秘密鍵のパスワード。
signature.extra_certslist<string>[]追加のチェーン証明書へのパス。
signature.levelstringB-B署名レベルの識別子。

Services::pdfSigner() は、signature.enabledtrue で、かつ 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.urlstring|nullnullTSA エンドポイントの URL。
tsa.usernamestring''TSA の Basic 認証ユーザー名。
tsa.passwordstring''TSA の Basic 認証パスワード。
tsa.certstring|nullnullクライアント証明書のパス。
tsa.keystring|nullnullクライアント鍵のパス。
tsa.timeoutint30リクエストのタイムアウト(秒)。
tsa.pinned_public_keyslist<string>[]ピン留めされた TSA 公開鍵。
tsa.warn_on_key_rotationbooltrueTSA の鍵ローテーション時の警告。
tsa.allow_insecure_httpboolfalseTSA への平文 HTTP の許可。

Services::tsaClient() は、tsa.urlnull または空文字列の場合に null を返します。タイムスタンプを必要とする署名レベルが選択された場合、 署名処理側は自動的に TSA クライアントを接続します。

キーデフォルト説明
ocspCache.enabledbooltrueOCSP レスポンスキャッシュの有効化。
ocspCache.ttlint86400キャッシュの TTL(秒単位)。
ocspCache.directorystring|nullnullキャッシュディレクトリ。null の場合はエンジンのデフォルト。
キーデフォルト説明
artisan.chrome_binarystring|nullnullChrome/Chromium バイナリのパス。
artisan.render_timeoutint30レンダリングのタイムアウト(秒)。
artisan.default_cssstring''デフォルトのスタイルシート。
artisan.no_sandboxboolfalseChrome に渡す --no-sandbox
artisan.max_html_sizeint5000000入力 HTML の最大サイズ(バイト)。

ドキュメントに対して Chrome レンダラーが構成されるのは、 artisan.chrome_binary が設定され、かつ nextpdf/artisan がインストールされている場合のみです。

BaseConfig は、プロパティごとに環境による上書きを解決します。ルックアップキーは、小文字の短いクラス名 nextpdf にプロパティパスを続けた形式です。ネストされた配列キーはドットで指定します。ドット形式とアンダースコア形式の両方を受け付けます。

.env
nextpdf.fontsPath = /var/www/writable/fonts
nextpdf.imageCacheMb = 100
nextpdf.signature.enabled = true
nextpdf.signature.certificate = /etc/nextpdf/cert.pem
nextpdf.signature.private_key = /etc/nextpdf/key.pem
nextpdf.tsa.url = https://tsa.example.com/timestamp
nextpdf.artisan.chrome_binary = /usr/bin/chromium
nextpdf.defaults.creator = Acme Billing
nextpdf.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_httpfalse のままにしておく必要があります。/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/ — 署名とパス構成の堅牢化。