İçeriğe geç
getnextpdf.com

Enterprise sürüm

Validation — Derin referans

Validation modülü, ham PDF baytlarına karşı önceden hazırlanmış, salt okunur yapısal uyumluluk politikaları çalıştırır. Compliance::assess() tam olarak bir CompliancePolicy uygular ve önem derecesine göre bölümlenmiş bulgular ile zorunlu bir hukuki sorumluluk reddi içeren bir ComplianceReport döndürür. Politikalar; PDF/A-4 (artı e ve f varyantları), PAdES baseline yapısı, bir eIDAS yapısal profili, LTV/DSS sağlığı, ZUGFeRD / Factur-X, FDA 21 CFR Part 11 ve SEC Rule 17a-4 WORM arşivleme için sevk edilir. Her politika saf bir fonksiyondur: baytlar girer, bulgular çıkar. Validation belgeyi asla değiştirmez ve asla kriptografik doğrulama gerçekleştirmez.

Bu yetenek NextPDF Enterprise (nextpdf/enterprise) içinde sevk edilir ve bir Enterprise katmanı lisans zarfıyla etkinleşir. Bu yetkiye sahip olmayan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve bir lisans alın.

Validation/Evidence yüzeyi, enterprise.compliance.evidence yeteneği tarafından lisanslanır. Reddedilen bir yetki, özelliği sessizce düşürmek yerine reddeder.

KatmanValidation yüzeyi
CoreSüreç içi bayt akışı doğrulayıcıları ve bir dilbilgisi çapraz denetimi; sıfır bulgulu bir sonuç, bir sertifika değil denetlenmiş bir sonuçtur.
ProE-fatura katmanında süreç içi EN 16931 / Factur-X / ZUGFeRD doğrulaması; önceden hazırlanmış PDF/A-4, PAdES, LTV, FDA veya SEC politikaları yok.
EnterprisePDF/A-4, PAdES, LTV, ZUGFeRD, FDA Part 11 ve SEC 17a-4 için birleşik bir raporla önceden hazırlanmış yapısal politikalar (bu modül).

Enterprise Compliance harici-yan-bileşen ağ geçidi, ayrı, farklı bir modüldür.

Terminal window
composer require nextpdf/enterprise:^3
SembolParametrelerVarsayılan davranışDöndürürŞununla fırlatır veya başarısız olurNotlar
Compliance::__construct?ClockInterface $clock = nullEnjekte edilmediğinde sistem saatiDI dostu örnek biçimi; saat validatedAt değerini damgalar
Compliance::runstring $pdfData, CompliancePolicy $policy, array $context = []Tam olarak bir politika uygular ve duvar saati süresini ölçerComplianceReportÖzel-politika istisnalarını yayar; yerleşik politikalar fırlatmak yerine bulguları toplarÖrnek yöntemi
Compliance::assess (statik)string $pdfData, CompliancePolicy $policy, array $context = []Varsayılan bir örnek oluşturur ve run() yöntemine devrederComplianceReportrun() ile aynıSıfır yapılandırmalı hızlı yol
Policies::pdfA4 / ::pdfA4e / ::pdfA4f (statik)ISO 19005-4:2020 uyarınca PDF/A-4 yapısal politikasıCompliancePolicye, 3D/zengin-medya açıklamalarına izin verir; f, gömülü-dosya ilişki denetimleri ekler
Policies::padesBaseline (statik)PAdES B-B yapısal denetimleriCompliancePolicyYalnızca yapı; kriptografik doğrulama yok
Policies::eidasQualified (statik)eIDAS etiketli bir profil altında PAdES yapısal denetimleriCompliancePolicyNitelik, TSP’ye ve nitelikli sertifikaya bağlıdır
Policies::ltvHealth (statik)DSS yapısal sağlık denetimiCompliancePolicyDSS varlığı, aktif nesne grafiğinden çözümlenir, hataya-kapalı
Policies::zugferd (statik)string $profile = 'BASIC'Profil takma adını normalleştirir ve ZUGFeRD doğrulayıcısını oluştururCompliancePolicy\ValueError (bilinmeyen profil)Profiller: MINIMUM, BASIC, BASIC_WL, EN16931, EXTENDED
Policies::fdaPart11 (statik)FDA 21 CFR Part 11 yapısal politikasıCompliancePolicyDenetim-izi karma-zincir bütünlüğü dahil yedi yapısal denetim
Policies::sec17a4 / ::sec17a4Compatible / ::sec17a4Structural / ::sec17a4PreSign (statik)Adlandırılmış katılıkta SEC 17a-4 WORM politikasıCompliancePolicyKatılık, WormComplianceLevel ile eşlenir
CompliancePolicy (arayüz)Tek bir standart için strateji sözleşmesigetName(), getIdentifier(), getStandardReference(), validate(); müşteri tarafından uygulanabilir
ComplianceReportSalt okunur değer nesnesiYapım anında önem derecesine göre bölümlenmiş bulgularpasses(), fails(), totalFindings(), getDisclaimer(); genel findings, errors, warnings, infos, policyName, policyId, standard, validatedAt, durationMs
ComplianceFindingSeverity $severity, string $ruleId, string $message, string $clause = '', string $suggestion = ''Madde referansı ve düzeltme ipucu ile tek bir kural sonucuStatik error() / warning() / info(); isError()
Severity (enum)3 dizeyle desteklenen durumError, Warning, InfoYalnızca Error bir raporu başarısız kılar
WormComplianceLevel (enum)4 dizeyle desteklenen durumFull, Compatible, Structural, PreSignrequiresSignature(), requiresDocMdp(), requiresLtv(), maxDocMdpLevel()
PdfAPolicy, PadesValidator, LtvHealthCheck, ZugferdValidator, Sec17a4WormPolicy, Fda\FdaPart11PolicySınıf başına yapıcılarHer biri tek bir standart için CompliancePolicy uygularvalidate() ürünü list<ComplianceFinding>Policies aracılığıyla elde edin; Sec17a4WormPolicy::getLevel(), yapılandırılmış katılığı açığa çıkarır
Fda\FdaSigningIntent (enum)6 dizeyle desteklenen durumAuthoring, Review, Approval, Certification, Verification, RejectiontoPdfReasonString(), kanonik /Reason dizesini üretir
Fda\FdaAuditEvent::__constructDateTimeImmutable $timestamp, string $actor, FdaSigningIntent $action, string $documentHash, string $certificateSerial, string $previousEventHash = ''Yapım anında SHA-256 zincir karmasını hesaplarInvalidArgumentException (zaman damgası UTC değil)Genel eventHash; toXmpRdf(), tek bir XMP liste öğesini serileştirir
Fda\FdaAuditTrail::addEventFdaAuditEvent $eventZincir bağlantısı iz kuyruğuyla eşleştiğinde olayı eklerselfInvalidArgumentException (karma zinciri kırık)Ayrıca createEvent(), verifyChain(), getLastEventHash(), getEvents(), embedInMetadata()
Fda\FdaSignatureEnforcer::configureSeedValueFdaSigningIntent $intent, string $tsaUrlFDA kısıtlı bir imza tohum-değeri yapılandırması oluştururSeedValueConfigFDA neden kümesini, bir zaman damgasını ve SHA-256 veya daha güçlü özetleri gerektirir
Fda\FdaSignatureEnforcer::applyToSequentialSigner $signer, SigningStrategy $strategy, string $signerName, FdaSigningIntent $intent, string $tsaUrl, string $fieldName = '', ?string $reason = nullBir Pro SequentialSigner’a FDA kısıtlı bir imzalayıcı eklerSequentialSignerKısıtlamaları üretilen imza alanına serileştirir
namespace NextPDF\Enterprise\Validation;
final readonly class Compliance
{
public function __construct(?ClockInterface $clock = null);
/** @param array<string, mixed> $context */
public function run(string $pdfData, CompliancePolicy $policy, array $context = []): ComplianceReport;
/** @param array<string, mixed> $context */
public static function assess(string $pdfData, CompliancePolicy $policy, array $context = []): ComplianceReport;
}
final class Policies
{
public static function pdfA4(): CompliancePolicy; // also pdfA4e(), pdfA4f()
public static function padesBaseline(): CompliancePolicy;
public static function eidasQualified(): CompliancePolicy;
public static function ltvHealth(): CompliancePolicy;
public static function zugferd(string $profile = 'BASIC'): CompliancePolicy;
public static function fdaPart11(): CompliancePolicy;
public static function sec17a4(): CompliancePolicy; // also sec17a4Compatible(), sec17a4Structural(), sec17a4PreSign()
}
interface CompliancePolicy
{
public function getName(): string;
public function getIdentifier(): string;
public function getStandardReference(): string;
/**
* @param array<string, mixed> $context
* @return list<ComplianceFinding>
*/
public function validate(string $pdfData, array $context = []): array;
}
final readonly class ComplianceReport
{
public const string LEGAL_DISCLAIMER;
public function passes(): bool;
public function fails(): bool;
public function totalFindings(): int;
public function getDisclaimer(): string;
}

Compliance::assess() (statik) ve Compliance::run() (örnek, enjekte edilebilir bir Psr\Clock\ClockInterface ile) tam olarak bir politika uygular ve bir ComplianceReport döndürür. Dışarıdan gözlemlenebilir kurallar:

  • Saf salt okunur. Her CompliancePolicy::validate() saf bir fonksiyondur: baytlar girer, bulgular çıkar. Bir politika asla PDF baytlarını değiştirmez. Bu mimari değişmez, doğrulamayı otomatik düzeltmeden ve Evidence modülünden ayrı tutar.
  • Önem derecesi geçidi. ComplianceReport::passes(), yalnızca errors === [] olduğunda true’dur. Uyarılar ve bilgiler bir raporu asla başarısız kılmaz. fails() bunun tümleyenidir.
  • Zorunlu sorumluluk reddi. ComplianceReport::getDisclaimer(), sabit hukuki-sorumluluk-reddi metnini döndürür. Bunu kullanıcıya yönelik çıktıda göstermek sözleşme gereğidir.
  • Rapor kökeni. Rapor; politikadan politika adını, tanımlayıcısını ve standart referansını, enjekte edilen veya sistem saatinden doğrulama zaman damgasını ve milisaniye cinsinden ölçülen süreyi taşır.
  • Topla, iptal etme. Yerleşik politikalar, ilk hatada durmak yerine geçerli tüm denetimleri çalıştırır ve her bulguyu toplar.
  • Yalnızca katalogdan erişilebilir DSS. LtvHealthCheck, DSS varlığını aktif nesne grafiğinden çözümler: aktif trailer, ardından /Root katalog, ardından /DSS ve alt anahtarları. Yorumlara, dizelere, yetim nesnelere veya geçersiz kılınmış revizyonlara yerleştirilen işaretçi baytlar sayılmaz. Ayrıştırılamayan girdi, DSS yok olarak ele alınır, bu nedenle denetim hataya-kapalıdır. Denetim yapısaldır; gömülü OCSP/CRL verisini kriptografik olarak doğrulamaz.
  • Yapısal imza denetimleri. Policies::padesBaseline() ve Policies::eidasQualified(), PAdES yapısını yalnızca PDF düzeyinde doğrular. eIDAS kapsamındaki nitelik, bu modülün dışında kalan TSP’ye ve nitelikli sertifikaya bağlıdır.
  • Düzenlemeye tabi sektör politikaları yapısaldır. FdaPart11Policy; imza varlığını, /Reason niyetini, /M imzalama zamanını, /Name kimliğini, JavaScript yokluğunu, FDA denetim-izi ad alanını ve karma-zincir bütünlüğünü denetler. Sec17a4WormPolicy, en fazla 13 WORM kuralını denetler; WormComplianceLevel, katılığı seçer. Full, DocMDP düzey 1 gerektirir, Compatible, düzey 2’yi kabul eder ve Structural / PreSign, imza, DocMDP ve DSS kurallarını atlar. Her iki politika da yasal uyumluluğu tesis etmez.
  • ZUGFeRD bağlamı. Policies::zugferd(), PDF düzeyindeki gereksinimleri her zaman denetler. Fatura XML’ini yalnızca çağıran, $context içinde ['xml' => $xmlData] geçtiğinde doğrular; aksi takdirde zugferd-xml-skipped bilgi bulgusunu yayar.
  • Kurcalamaya karşı korumalı denetim izi. FdaAuditTrail, yalnızca ekleme yapılan bir SHA-256 karma zinciridir. addEvent(), kırık bir bağlantıyı reddeder, verifyChain(), her karmayı yeniden türetir ve embedInMetadata(), izi http://ns.nextpdf.dev/fda/1.0/ altında bir PDF/A uzantı şemasıyla XMP’ye yazar.
  • PDF olmayan veya boş bir girdi, yerleşik politikalarda bir istisna yerine hata bulguları verir. Her zaman passes() değerini denetleyin ve sorumluluk reddini gösterin.
  • Policies::zugferd(), profil takma adlarını (BASIC_WL, EN16931, EN_16931) normalleştirir. Bilinmeyen bir profil, herhangi bir doğrulama çalışmadan önce fabrika zamanında \ValueError yükseltir.
  • CRL’leri olan ancak OCSP yanıtı olmayan bir DSS, iptal-materyali denetimini karşılar; bulgu, kabul edilebilir alternatifi belirtir. İkisinin de bulunmaması bir hatadır.
  • Eksik bir /VRI sözlüğü veya /Certs dizisi, hata değil uyarı üretir; rapor yine de geçebilir.
  • FdaAuditEvent, UTC olmayan herhangi bir zaman damgasını yapım anında InvalidArgumentException ile reddeder.
  • FdaAuditTrail::verifyChain(), kurcalanmış veya yeniden sıralanmış herhangi bir olayda false döndürür; asla fırlatmaz.
  • Özel CompliancePolicy uygulamaları validate() içinden fırlatabilir; Compliance::run() bunları yakalamaz, bu nedenle bu tür istisnalar çağırana yayılır.

Bu modül hiçbir imzalama, hiçbir kriptografik doğrulama ve hiçbir anahtar saklama gerçekleştirmez. FIPS modu algoritma politikası, Security ve Signature modülleri tarafından yönetilir. FdaSignatureEnforcer tohum değerleri, FDA’ya bağlı imza alanlarını SHA-256, SHA-384 veya SHA-512 özet yöntemleriyle kısıtlar.

Bu politikalar, yapısal öznitelikleri adlandırılmış standartlara göre denetler. ISO/ETSI profilleri için uygunluk kararı, nihai dosyanın artı harici bir doğrulayıcının özelliği olarak kalır.

DavranışReferans
Uygunluk, üreticiye göre değil standarda göre belirlenirISO 19005-4:2020 §5.2
Uzun vadeli doğrulama için dijital imza sözlüğü / DSSISO 32000-2:2020 §12.8
DSS, belge kataloğunun DSS anahtarı tarafından tutulan bir sözlüktürISO 32000-2:2020 §12.8.4.3
PAdES baseline imza düzeyleriETSI EN 319 142-1 §5.4.3
EN 16931 profilinin anlamsal modeli (destekleyici referans)Factur-X 1.08 (EN 16931)

FDA 21 CFR Part 11 ve SEC 17a-4 politikaları yalnızca yapısal öznitelikleri denetler; bu düzenlemeler doğrulama bütüncesinin dışındadır ve hiçbir doğrulanmış uygunluk iddiası taşımaz. FDA bulgularının içindeki madde dizeleri (örneğin §11.50, §11.10(e)) ürün tarafından yayılan kural referanslarıdır. EN 16931 satırı, getirme tabanının altında bir destekleyici referanstır; katı bir uygunluk iddiası değildir. Bir standardın desteklenmesi ona uygunluk değildir ve uygunluk sertifikasyon değildir — NextPDF hiçbir sertifikaya sahip değildir ve hiçbirini vermez. Bu referans bir hukuki görüş değildir; yasal yeterlilik için uyumluluk ekibinize danışın.

  • Validation, ağ G/Ç’si olmadan süreç içinde ve yerel olarak çalışır. Bir politika girdiyi değiştiremez.
  • Güvenilmeyen kaynaklardan gelen PDF baytlarını düşmanca kabul edin. Yerleşik politikalar, rastgele baytlar üzerinde tümdür ve yapının çözümlenemediği yerde hataya-kapalı olur.
  • Bir raporun kullanıcıya yönelik her sunumunda ComplianceReport::getDisclaimer() değerini gösterin.
  • Raporlar ve bulgular, imzalı belgelerden ve denetim-izi meta verilerinden kişisel veri taşıyabilir (imzalayan adları, sertifika seri numaraları). Saklama ve en aza indirme denetimleri operatöre aittir.
  • Özel politikalar CompliancePolicy uygular; serileştirme ve önbelleğe alma için tüm politikalar genelinde getIdentifier() değerini benzersiz tutun.
  • Bu modül kriptografik işlevsellikle ilgilidir; kendi incelemenizde onu güvenlik açısından hassas olarak ele alın.
  • Dahilî mekanizma ayrıntısı, kaynak deposunun dahilî belgelerinde kalır ve bu kılavuzun kapsamı dışındadır.

Bu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahilî ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, runbook dosya adları ve bilet önekleri kapsam dışıdır.