コンテンツにスキップ
getnextpdf.com

Enum リファレンス

NextPDF のオーサリングメソッドのいくつかは、素の文字列や整数ではなく、型付けされた enum を受け取ります。この enum が契約です。引数を固定された有効な集合に制約し、その範囲外の値は IDE と PHPStan が拒否します。このページは、公開 Document と Config API を通じて設定する(あるいは受け取る)enum の、許可値ルックアップです——加えて 1 つのエンジンレベルのカラー enum(RenderingIntent)も含みます。これはそのケースが公開カラー契約の一部であるために含めており、登場箇所ではエンジンレベルである旨を明示します。

これは設定リファレンスの姉妹編です。Config オブジェクトどのつまみ を回すかを示すのに対し、このページは そのつまみがどの値を受け取るか を示します。各エントリーには、enum の完全修飾クラス名(FQCN)、そのバッキング型、ソースからコピーした正確なケース一覧、そしてそれを受け取る公開メソッドを列挙します。

エンジン内部の深い enum(HTML/CSS レイアウト、抽象構文木、CLI、シェイパー内部)は意図的に除外しています——それらを設定することはありません。以下のほぼすべては、公開 API を通じて渡す値です。唯一の例外である RenderingIntent は、公開セッターを持たないエンジンレベルのカラー enum であり、網羅性のために掲載し、登場箇所でその旨を明記します。

PHP の enum には 2 つの形があり、その形によって値の書き方が変わります。

  • バックド(backed) な enum(enum X: string または enum X: int)は、すべてのケースにスカラーの value を持つため、X::from('...') / $case->value でラウンドトリップできます。ここにある enum のほとんどはバックドです。
  • ピュア(pure) な enum(バッキング型のない enum X)はケースを持ちますが、スカラー値は持ちません。常にケース(X::SomeCase)で参照します。ピュアなのは UnderlineStyle のみです。

どちらの形でも、ケース自体を渡します——たとえば $pdf->addPage(orientation: Orientation::Landscape) のように。バッキング型が問題になるのは、選択をシリアライズしたり、設定から読み戻したりする必要があるときだけです。

ポートレートまたはランドスケープのページ形状。ページを追加するときに渡し、エンジンが幅と高さを入れ替えて合わせます。

PropertyValue
FQCNNextPDF\Contracts\Orientation
Backingstring
Set viaDocument::addPage(?PageSize $size = null, Orientation $orientation = Orientation::Portrait)
CaseBacking value
Portrait'P'
Landscape'L'
use NextPDF\Contracts\Orientation;
use NextPDF\ValueObjects\PageSize;
$pdf->addPage(PageSize::a4(), Orientation::Landscape);

ストロークされた開いたパスがどう終端するか。ISO 32000-2:2020 §8.4.3.3。

PropertyValue
FQCNNextPDF\Graphics\LineCap
Backingint
Set viaLineStyle 設定オブジェクト(new LineStyle(cap: ...))を介し、Document::setLineStyle(LineStyle $style) で適用
CaseBacking valueMeaning
Butt0終点で角ばった端、突き出しなし。
Round1終点で半円の弧。
Square2終点を線幅の半分だけ越えて伸びる角ばった突き出し。

ストロークされた 2 つのセグメントが角でどう接続するか。ISO 32000-2:2020 §8.4.3.4。

PropertyValue
FQCNNextPDF\Graphics\LineJoin
Backingint
Set viaLineStyle 設定オブジェクト(new LineStyle(join: ...))を介し、Document::setLineStyle(LineStyle $style) で適用
CaseBacking valueMeaning
Miter0マイター制限まで伸びた鋭い角。
Round1外縁を結ぶ円弧。
Bevel2外縁を結ぶ対角線。

LineCapLineJoin は Document のメソッドに直接渡すものではありません——それらは不変の NextPDF\Graphics\LineStyle 値オブジェクトのフィールドであり、その値オブジェクトを setLineStyle() に渡します。

use NextPDF\Graphics\{LineStyle, LineCap, LineJoin};
$style = new LineStyle(width: 1.5, cap: LineCap::Round, join: LineJoin::Bevel);
$pdf->setLineStyle($style);
$pdf->line(20, 20, 120, 20);

以降の描画に適用される透過ブレンド関数。最初の 12 ケースは分離可能(separable)で、最後の 4 ケースは非分離(non-separable)の HSL モードです。ISO 32000-2:2020 §11.3.5。

PropertyValue
FQCNNextPDF\Graphics\BlendMode
Backingstring
Set viaDocument::setAlpha(float $alpha, BlendMode $mode = BlendMode::Normal)
CaseBacking valueCaseBacking value
Normal'Normal'HardLight'HardLight'
Multiply'Multiply'SoftLight'SoftLight'
Screen'Screen'Difference'Difference'
Overlay'Overlay'Exclusion'Exclusion'
Darken'Darken'Hue'Hue'
Lighten'Lighten'Saturation'Saturation'
ColorDodge'ColorDodge'Color'Color'
ColorBurn'ColorBurn'Luminosity'Luminosity'
use NextPDF\Graphics\BlendMode;
$pdf->setAlpha(0.6, BlendMode::Multiply);
$pdf->rect(20, 20, 80, 40, 'F');

カラー変換中に、色域外(out-of-gamut)の色をどう再マッピングするか。ri 演算子として出力されます。ISO 32000-2:2020 §8.6.5.8(Table 71)。

このページの他の enum とは異なり、RenderingIntent には 公開 Document または Config セッターがありません ——これは エンジンレベル の enum です。内部の描画エンジン(DrawingEngine::setRenderingIntent())に直接適用され、現在のコンテンツストリームへ ri 演算子を出力します。そのケースが公開カラー契約の一部であるため網羅性のために掲載しますが、このページの残りが扱う開発者向けのオーサリング API の一部ではありません。描画エンジンは、あなたがプログラムする入口ではなく内部クラスとして扱ってください。

PropertyValue
FQCNNextPDF\Graphics\RenderingIntent
Backingstring
Set viaエンジンレベルのみ——内部の描画エンジンに適用。公開 Document/Config セッターはなし。
CaseBacking valueMeaning
RelativeColorimetric'RelativeColorimetric'色域内の色を保持し、色域外をクリップ。
AbsoluteColorimetric'AbsoluteColorimetric'用紙の白を含め、測色値を正確に保持。
Saturation'Saturation'色相/輝度を犠牲にして鮮やかな彩度を保持。
Perceptual'Perceptual'視覚的な関係を保持。なめらかな色域圧縮。

ドキュメントの /OutputIntent に宣言される、作業空間のカラープロファイル。デフォルトの DeviceRGB は従来の「追加の OutputIntent なし」の挙動を保持します。他のいずれかのケースを選択すると、ライターは同梱の ICC プロファイルとともに /GTS_PDFX OutputIntent を出力します(ISO 32000-2:2020 §14.11.5)。これは呼び出しごとのメソッドではなく Config の値です——Document に渡す設定オブジェクト上で設定します。

PropertyValue
FQCNNextPDF\Core\OutputColorProfile
Backingstring
Set viaConfig::withOutputColorProfile(OutputColorProfile $profile)Config コンストラクターの $outputColorProfile パラメーター)
CaseBacking valueNotes
DeviceRGB'device-rgb'デフォルト。追加の OutputIntent は出力されない。
Srgb'srgb'明示的な sRGB OutputIntent(IEC 61966-2-1)。広色域ではない。
DisplayP3'display-p3'Display-P3 広色域(D65)。
Rec2020'rec2020'ITU-R BT.2020 / Rec.2020 広色域。
A98RGB'a98-rgb'Adobe RGB 1998。
ProphotoRGB'prophoto-rgb'ProPhoto RGB / ROMM RGB(D50)。
use NextPDF\Core\{Config, OutputColorProfile};
$config = (new Config())->withOutputColorProfile(OutputColorProfile::DisplayP3);

グリフを塗りつぶすか、ストロークするか、クリップするか、不可視でレンダリングするか(不可視モードは検索可能な OCR レイヤーの基盤です)。ISO 32000-2:2020 §9.3.6、Table 104。

PropertyValue
FQCNNextPDF\Content\TextRenderingMode
Backingint
Set viaDocument::setTextRenderingMode(TextRenderingMode $mode)
CaseBacking valueMeaning
Fill0グリフを塗りつぶす。
Stroke1グリフの輪郭をストロークする。
FillStroke2塗りつぶしてからストロークする。
Invisible3不可視でレンダリングする(検索可能な OCR レイヤー)。
FillClip4塗りつぶし、クリッピングパスに追加する。
StrokeClip5ストロークし、クリッピングパスに追加する。
FillStrokeClip6塗りつぶし、ストロークし、クリップする。
Clip7クリッピングパスへの追加のみ(可視レンダリングなし)。

下線装飾をどう描くか。これはここで唯一の ピュア な enum であるため、常にケースで参照します。

PropertyValue
FQCNNextPDF\Contracts\UnderlineStyle
Backingpure (no backing value)
Set viaDocument::setUnderlineStyle(UnderlineStyle $style)
CaseMeaning
RectFillベースライン下の塗りつぶされた矩形(TCPDF 互換のデフォルト)。
StrokeLineベースライン下のストロークされた線(セマンティックな線描画)。
use NextPDF\Content\TextRenderingMode;
use NextPDF\Contracts\UnderlineStyle;
$pdf->setTextRenderingMode(TextRenderingMode::Invisible); // OCR text layer
$pdf->setUnderlineStyle(UnderlineStyle::StrokeLine);

ドキュメントレベルの適合性契約。ライターが順守すべき ISO のパートと、構造タグ付けが必須かどうか。デフォルトの Plain は制約のない PDF 2.0 出力です。ISO 14289-2:2024(PDF/UA-2)と ISO 19005 の PDF/A 各パート。

PropertyValue
FQCNNextPDF\Conformance\ConformanceMode
Backingstring
Set viaDocument::setConformanceMode(ConformanceMode $mode)(低レベルのエスケープハッチ。Core では PDF/UA-2 に enableTaggedPdf()、PDF/A には enablePdfA()——Premium 限定——を優先)
CaseBacking valueContract
Plain'plain'PDF 2.0、制約なし(デフォルト)。
PdfUa1'pdfua1'ISO 14289-1(Tagged PDF/UA-1)。
PdfUa2'pdfua2'ISO 14289-2:2024(Tagged PDF/UA-2)。
PdfA2'pdfa2'ISO 19005-2(PDF/A-2)。
PdfA3'pdfa3'ISO 19005-3(PDF/A-3 プロファイル判別子)。
PdfA3b'pdfa3b'ISO 19005-3 PDF/A-3b(Basic)。
PdfA3u'pdfa3u'ISO 19005-3 PDF/A-3u(Unicode 抽出可能)。
PdfA4'pdfa4'ISO 19005-4:2020(PDF/A-4 プロファイル判別子)。
PdfA4e'pdfa4e'ISO 19005-4:2020 PDF/A-4e(Engineering)。
PdfA4f'pdfa4f'ISO 19005-4:2020 PDF/A-4f(File attachments)。

この enum は述語ヘルパー——isTagged()isAccessibility()isArchival()pdfaPart()——を備えているため、ライター側のゲートはモードを再導出するのではなく、モードに基づいて分岐します。

Core のみのビルドが実際に使えるケース。 enum 型はすべてのケースを列挙しますが、ケースが列挙されていることと、その適合性を Core から 生成 できることは同じではありません。

  • Core(追加パッケージなし): PlainPdfUa1PdfUa2。Tagged PDF / PDF/UA パスは Core に組み込まれています——enableTaggedPdf() は PDF/UA オーサリングパス(デフォルトで PdfUa2)を選択し、ライセンスチェックなしで構造ツリーを配線します。
  • Premium 限定: すべての PDF/A ケース(PdfA2PdfA3PdfA3bPdfA3uPdfA4PdfA4ePdfA4f)。実際の PDF/A 出力は enablePdfA() によって生成され、これは Premium ティアの機能です(ADR-011)。nextpdf/pro パッケージが必要であり、そのパッケージが存在しない場合は InvalidConfigException(“install the nextpdf/pro package”)でフェイルクローズします。

setConformanceMode() は判別子フィールドだけを書き込む低レベルのエスケープハッチです——PDF/A の機構を インストールしません。したがって、Core のみのビルドでこれを通じて PdfA* ケースを設定すると、enablePdfA() が提供するアーカイブ保証を与えずにドキュメントにラベルを付けることになるため、Premium 限定のモードを Core のみのビルドで頼りに してはなりません。実際の適合性パスには enableTaggedPdf() / enablePdfA() を使用し、PDF/A の成果物が必要なときは必ず Premium パッケージに手を伸ばしてください。

use NextPDF\Conformance\ConformanceMode;
$pdf->setConformanceMode(ConformanceMode::PdfUa2);

埋め込まれた関連ファイルに対する /AFRelationship の値。適合しない値は PDF/A-3 および PDF/A-4 の検証に失敗するため、この enum がそれを設定する安全な方法です。ISO 32000-2:2020 §14.13.5(Table 401)。

PropertyValue
FQCNNextPDF\Navigation\AFRelationship
Backingstring
Set viaDocument::embedFile(string $path, string $description = '', AFRelationship|string $afRelationship = AFRelationship::Unspecified)
CaseBacking valueUse
Source'Source'PDF が生成された元のソースドキュメント。
Data'Data'PDF の派生元の生データ(例: Factur-X / ZUGFeRD XML)。
Alternative'Alternative'代替表現(点字、キャプション、SVG)。
Supplement'Supplement'補足資料。
EncryptedPayload'EncryptedPayload'PDF が包む不透明な暗号化ブロブ。
FormData'FormData'フォームデータ(XFDF、FDF、XML)。
Schema'Schema'Data ファイルを記述するスキーマ(XSD、JSON Schema)。PDF 2.0。
Unspecified'Unspecified'関係を指定しない(デフォルト)。

embedFile() は enum ケースまたはその文字列リテラル(先頭スラッシュの有無を問わず)のいずれも受け取るため、AFRelationship::Data'/Data' は等価です。ケースを渡すのが型安全な選択です。

use NextPDF\Navigation\AFRelationship;
// e-invoice payload: declare the XML as the source data
$pdf->embedFile('invoice.xml', 'Factur-X invoice data', AFRelationship::Data);