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

Pro エディション

Compliance — 詳細リファレンス

Compliance モジュールは、NextPDF\Pro\Compliance の下に 3 つの独立したサーフェスをまとめています。

  • 言語タグの報告 — 厳格な PDF/UA-2 /Lang ポリシーのファサードと、構造化された PSR-3 形式のコンプライアンスイベントレポーター。
  • 電子インボイスの処理 — EN 16931 セマンティックモデルに照らした Factur-X 1.08 / ZUGFeRD 2.4 の検証と、ハイブリッド PDF/A-3 の出力。
  • 来歴(Provenance) — 敵対的入力に対して堅牢化された JUMBF パーサーを通じて、呼び出し元が供給した C2PA マニフェストストアを埋め込み・抽出します。クレームの合成はプレビューゲートのままです。

このモジュールは、チェックした内容を報告します。ドキュメントを認証することはなく、暗号署名も行いません。

この機能は NextPDF Pronextpdf/pro)に含まれ、Pro ティアのライセンスエンベロープで有効化されます。その権限を持たないデプロイメントでは、この機能のクラスは読み込まれません。エディションを比較してライセンスを取得

機能ごとのライセンスフラグはありません。これは Pro エディションの機能です。実験的な C2PA クレームビルダーは、加えて明示的な環境オプトインを必要とします(「エッジケースと障害モード」を参照)。

Terminal window
composer require nextpdf/pro:^3
シンボルパラメーター既定の挙動戻り値スロー/失敗条件備考
LangComplianceReporter::warn() / ::error()string $tag, string $reason, ?string $clauseReference = nullPSR-3 ロガーを通じて、言語タグイベントごとに 1 つの構造化された JSON レコードを出力voidレコードの JSON エンコードが失敗した場合は JsonExceptionwarn = lax モードの拒否、error = strict モードの拒否
LangComplianceReporter::reportException()InvalidBcp47TagException $exception, string $severity = 'error'例外からタグと理由を抽出し、warn() または error() に委譲void同上利便性のための経路
LangComplianceReporter::buildRecord()string $severity, string $tag, string $reason, ?string $clauseReference = nullログ記録せずにレコード配列を構築arrayスローしないファイルごとの JSON サマリーなど、カスタムシンク向け
ConformancePolicy::default()?LoggerInterface $logger = null厳格な UA-2 ポリシー。不正な形式または未登録の /Lang タグを拒否selfスローしないv5.0 の既定は strict
ConformancePolicy::fromCore()CoreConformancePolicy $core, ?LoggerInterface $logger = null既存の Core ポリシーをそのままラップ。軸は反転しないselfスローしないstrict な姿勢には default() を推奨
ConformancePolicy::withStrictUa2()bool $enabledstrict 軸を設定したコピーを返す。無効化すると PSR-3 notice を出力selfスローしない非推奨のオプトアウト。削除目標は 6.0.0
ConformancePolicy::isStrictUa2() / ::mode()基盤となる Core ポリシーを読み取るbool / ConformanceModeスローしない
EInvoiceValidator::validate()string $pdfPathフルパイプライン。PDF/A-3 ラッパーチェック、添付の抽出、プロファイル検出、EN 16931 ルール、SchematronEInvoiceValidationResultI/O 障害、不正な形式の PDF 構造、またはツールのクラッシュ時に EInvoiceException のサブクラス凍結された SPI インターフェース。整形式の非電子インボイス PDF は結果を返し、スローしない
EInvoiceXmlValidator::validate()string $xmlPayload, ValidatorContext $context構造のプリフライトに加え、CII ペイロードに対する EN 16931 の詳細セマンティックルールコーパスcontract ValidationResult無効な入力に対してはスローしない。拒否は所見を伴う失敗結果として表れる具象のクロスティアバリデーター。入力は XmlGuard を通じてゲートされる
EInvoiceValidationResult::isValid()ラッパー、添付仕様、プロファイル、構文が成立し、かつ FATAL 違反が存在しない場合にのみ真boolスローしない違反リストが空であることだけでは有効性にはならない
EInvoiceValidationResult::notAnEInvoice()決定論的な、すべて null・すべて false の結果selfスローしない「ハイブリッドインボイスではない」ケースのファクトリー
EInvoiceProfile文字列バック列挙型ケース MINIMUMBASIC_WLBASICEN16931EXTENDED。BT-24 URN によりバックMINIMUMBASIC_WL では isEn16931Conformant() は false
EInvoiceSyntax文字列バック列挙型ケース UN_CEFACT_CIIUBL_INVOICEUBL_CREDIT_NOTEisFacturXEligible() が真なのは CII のみ。UBL はバリデーター専用
BusinessRuleViolationstring $ruleId, BusinessRuleSeverity $severity, string $message, ?string $xpath = null, ?string $ramPath = null不変の違反 DTOルール ID ファミリー BR-BR-CO-BR-CL-BR-DEC-BR-FXEXT-
BusinessRuleSeverity文字列バック列挙型FATAL はインボイスを無効化し、WARNING は品質上の懸念を示すEN 16931 の Schematron レベルを反映
FacturXEmbedder::embed()署名フェンスを参照PDF/A ソースに埋め込みファイルストリーム、filespec、XMP を追加し、xref を書き換えるvoid不正な形式の XML、読み取り不能なソース、カタログの欠如、オブジェクトストリームまたは xref ストリームのソース、または出力書き込み失敗時に EInvoiceExceptionソースファイルはそのまま保持される
FacturXEmbedderOptions::default()/AFRelationship /Alternative、ファイル名 factur-x.xml、タイプ INVOICE、バージョン 1.0selfスローしない既定はドイツの義務を満たし、フランスでも引き続き受け入れられる
FacturXEmbedderOptions::withRelationship() / ::withFilename()stringオーバーライドを適用したコピーを返すself受け入れ集合外では InvalidArgumentExceptionリレーションシップ:SourceDataAlternative。ファイル名には zugferd-invoice.xmlxrechnung.xml を含む
FacturXEmbedderOptions::withDocumentType()string $documentTypeXMP のドキュメントタイプのオーバーライドを適用したコピーを返すselfスローしない値は防御的に列挙されていない
FacturXContractEmbedder::embed()string $pdfBytes, string $xmlPayload, EmbedderOptions $options短命の一時ファイルを介した FacturXEmbedder 上のバイト入力・バイト出力アダプターstringEInvoiceExceptionXRECHNUNG プロファイルは Enterprise 専用として拒否されるクロスティアの EmbedderInterface 実装
C2paManifestEmbedder::embed()string $pdfBytes, ManifestStore $storeストアのバイトシリアライズをプロファイル位置に埋め込むstring埋め込み失敗時にはすべて C2paException凍結された SPI インターフェース。バイトのみ、I/O なし
C2paManifestEmbedder::extract()string $pdfBytes堅牢化された JUMBF パーサーを通じて埋め込みストアを解析ManifestStore|nullストアが存在するが堅牢化キャップに違反する場合、C2paException のサブクラスnull は不在を示す。不在時はスローしない
ManifestStore::fromBoxes() / ::empty()list<JumbfBox> / —不変のストア値オブジェクトを構築selfスローしないボックスの順序はラウンドトリップの等価性にとって重要
ManifestStore::toBytes() / ::isEmpty() / ::size()ルートボックスをシリアライズ。空のストアは空文字列にシリアライズされるstring / bool / intスローしない
JumbfBoxParser::parse()string $bytesハードキャップの下でルートレベルの JUMBF ボックスを解析list<JumbfBox>MalformedJumbfException, JumbfBombException, JumbfCycleDetectedException, JumbfDepthExceededExceptionキャップ:深さ 8、ボックスあたり 64 MiB、合計 128 MiB、MAX_CHILDREN_PER_SUPERBOX 4096
JumbfBox::superbox() / ::leaf()string $tbox, …検証済みボックスを構築。toBytes() はパーサーを通じてラウンドトリップするselfTBox が正確に 4 バイトでない場合は MalformedJumbfException
C2paCapabilityStatus::current() / ::summary()C2PA 機能の成熟度を報告。現在は preview-draftself / stringスローしない機械可読なプレビューマーカー
Feature::PREVIEW_C2PA_DRAFT->isEnabled()呼び出しごとにプロセス環境を読み取る。有効化するのはリテラル '1' のみboolスローしない環境変数 NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT
ExperimentalC2paEmbedder::buildManifestStore()string $sourceBytes, string $producer1 つの SHA-256 ハッシュバインディングクレームアサーションを持つ、ドラフト固定のマニフェストストアを構築ManifestStoreプレビューフラグがオフの場合、コンストラクターが LogicException をスロープレビュー。ワイヤーフォーマットはドラフトスナップショットに固定。クレーム署名は出力されない

エントリーポイントのシグネチャ(そのまま):

public static function default(?LoggerInterface $logger = null): self
public function withStrictUa2(bool $enabled): self
public function isStrictUa2(): bool
public function validate(string $pdfPath): EInvoiceValidationResult
public function embed(
string $sourcePdfPath,
string $xml,
EInvoiceProfile $profile,
string $outputPdfPath,
?FacturXEmbedderOptions $options = null,
): void
public function embed(string $pdfBytes, ManifestStore $store): string
public function extract(string $pdfBytes): ?ManifestStore

言語タグの報告。 LangComplianceReporter は、PDF/UA-2 の言語タグイベントごとに 1 つの構造化された JSON レコードを出力します。各レコードは、固定のイベント弁別子、重大度(lax モードの拒否は warn、strict モードの拒否は error)、問題のタグそのまま、機械可読な理由、解析されたタグコンポーネント(またはタグが RFC 5646 の形状文法を満たさない場合は null)、ISO 14289-2 §8.4.4 の節参照、そしてマイクロ秒付きの UTC タイムスタンプを保持します。この JSON は PSR-3 のメッセージ本文として渡され、下流のシンクはメッセージフィールドを直接解析します。ConformancePolicy は、Core の適合ポリシーに対する Premium のファサードです。その既定は厳格な UA-2 言語処理を適用し、/Lang に到達する不正な形式または未登録のタグを拒否します。オプトアウトヘルパー withStrictUa2(false) はレガシーの lax な挙動に戻し、実効値が実際に変化したときに PSR-3 の notice をログに記録します。NextPDF はそのヘルパーを v5.0 以降 非推奨 とし、削除目標を 6.0.0 としています。移行するには:composer pdfua2:audit-lang-tags <pdf-or-dir> で不正な形式の /Lang 値についてコーパスを監査し、それらを修正し、続いてオプトアウト呼び出しを削除します。

電子インボイスの処理。 EInvoiceValidator は、ハイブリッド PDF 検証のための凍結された SPI 契約です。PDF/A-3 ラッパーチェック、/AF 添付の抽出、BT-24 仕様識別子からのプロファイル検出、EN 16931 のビジネスルールエンジン、そして Schematron パスを行います。整形式の非 Factur-X PDF は、スローするのではなく EInvoiceValidationResult::notAnEInvoice() を返します。EInvoiceException のサブクラスを送出するのは、I/O 障害、不正な形式の PDF 構造、またはツールのクラッシュの場合のみです。EInvoiceXmlValidator は、具象のクロスティア XML バリデーターです。入力を Core の XmlGuard を通じてゲートし、構造のプリフライトと EN 16931 の詳細セマンティックルールコーパスを実行し、フェイルクローズします。エンジンのエラーはエラー所見として表れ、暗黙のパスになることは決してありません。FacturXEmbedder は、PDF/A ソースをハイブリッド PDF/A-3 に修正します。埋め込みファイルストリーム、構成可能な /AFRelationship を持つ filespec、そして Factur-X XMP 拡張パケットを追加し、続いて従来型のクロスリファレンステーブルを書き換えます。カタログの /AF 配列と /Names /EmbeddedFiles ネームツリーの両方が添付を参照するため、レガシーの ZUGFeRD リーダーもそれを解決できます。

来歴(Provenance)。 C2paManifestEmbedder は、呼び出し元が供給した C2PA マニフェストストアを PDF バイト文字列に埋め込むか、それを抽出します。ManifestStore は、境界を越える不変の値オブジェクトです。このシームはバイトのみでベンダー中立です。クレームを合成したり、URI 参照を取り込んだり、ハッシュバインディングを解決したりせず、ネットワークやファイルシステムの I/O を一切行いません。extract() はミス時に null を返し、ストアを持たない PDF では低コストです。null でない抽出はすべて、すでに JumbfBoxParser の堅牢化キャップを通過しています。

このモジュールは チェックした内容を報告します。ドキュメントを認証したり、法的に拘束力のあるものにしたり、いずれかの出力が規制を満たすことを保証したりはしません。電子インボイスバリデーターは税務当局のバリデーターではなく、各国の拡張(例:イタリアの SDI、フランスの Chorus Pro、ドイツの XRechnung)を除外します。EN 16931-1 が述べるとおり、インボイスの発行者は引き続き関連法令の規則を満たす責任を負います。標準のサポートは、その標準への適合ではありません。規制上の十分性については、コンプライアンスチームにご相談ください。

  • 整形式の非 Factur-X PDF は「電子インボイスではない」という結果を返します。スローはしません。
  • ビジネスルール違反のリストが空であることは、それ自体ではドキュメントが有効であることを意味しません。ラッパーと添付のチェックも適用されます。
  • FacturXEmbedder は、圧縮オブジェクトストリーム(/Type /ObjStm)またはクロスリファレンスストリーム(/Type /XRef、ハイブリッドの /XRefStm)を使用するソースに対してフェイルクローズします。そのようなソースは、まず従来型のクロスリファレンステーブルで保存し直してください。
  • XML ペイロードは Core の XmlGuard を通じてゲートされます。DOCTYPE またはエンティティ宣言、過大な入力、無効な UTF-8 は、埋め込み経路では EInvoiceException で、バリデーター経路では失敗結果で拒否されます。
  • FacturXContractEmbedder は、XRECHNUNG プロファイルを暗黙にダウングレードするのではなく、明示的に拒否します。XRechnung の出力は Enterprise の機能です。
  • C2paManifestEmbedder::extract() は、不在(null)と不正な形式(違反した不変条件を示す C2paException のサブクラス:不正な形式の構造、サイズまたは数のボム、オフセットの循環、ネストの深さ)を区別します。
  • ExperimentalC2paEmbedder の構築は、プレビュー環境フラグが '1' に等しくない限り LogicException をスローします。そのワイヤーフォーマットは C2PA のドラフトスナップショットに固定されており、予告なく変更される可能性があります。クレーム署名は一切出力しません。この機能は、C2PA の PDF プロファイルが凍結されるまでプレビューのままです。
  • strict UA-2 の lax オプトアウトは非推奨です。strict な既定へ移行してください(「挙動の契約」を参照)。
  • このモジュールは暗号署名を行いません。C2PA クレームの署名と鍵保管は対象外です。FIPS モードの署名挙動については Security モジュールを参照してください。
振る舞い参照ステータス
自然言語の宣言(/LangISO 14289-2:2024 §8.4.4チェック/報告
コアインボイスセマンティックモデルEN 16931-1:2026チェック(発行者は引き続き責任を負う)
関連ファイル/埋め込みファイルストリームISO 32000-2:2020 §14.13.2出力(/AF/EF/Params
添付リレーションシップとコンテナ規則Factur-X 1.08 §3.1, §6.2出力/チェック(既定 /AFRelationship /Alternative
C2PA マニフェストストア/JUMBFC2PA 2.1 §11.1埋め込み/抽出をサポート。クレーム合成はプレビュー

これは、このモジュールが準拠して構築されている仕様と、それがチェックまたは出力する内容を記録したものです。認証や規制上の十分性を述べたものではありません。NextPDF はこれらの標準の認証を保有していません。

  • レポーターのレコード形状は安定した契約です。下流のアラートルールは、固定のイベント弁別子に対して固定できます。
  • strict UA-2 の無効化は、実効値が変化したときにのみテレメトリで可視の非推奨通知を出力します。現在の値を再表明する場合は無音です。
  • Factur-X エンベッダーはソースバイトをそのまま保持し、新しいオブジェクトを追加します。PDF/A-3 適合の維持を目指しますが、再検証は行いません。厳密な証明のためには、出力を外部の PDF/A バリデーターに通してください。
  • C2PA シームは 5 つの不変条件を凍結します:サードパーティのインポートなし、バイトのみの契約、I/O なし、ミス時 null の抽出、そして安定レイヤーでのクレーム合成なし。
  • JumbfBoxParser のキャップは公開定数です。制限を再導出するのではなく、受け入れる入力をそれらに照らしてサイズ設定してください。

このページは、外部から観測可能な挙動と、サポートされる公開 API サーフェスのみを記載します。内部の名前空間パス、ヘルパークラス、メカニズムテーブル、ランブックのファイル名、チケットのプレフィックスは対象外です。