Uygunluk: ConformanceMode ile yönlendirme ve doğrulama sınırı
Genel bakış
“Genel bakış” başlıklı bölümNextPDF\Conformance, bir Portable Document Format (PDF) dosyasının hangi International Organization for Standardization (ISO) sözleşmesini hedeflediğini yazıcıya bildiren tek ayrıştırıcıdır. Kitaplık, söz konusu sözleşmenin tanımladığı yapıları yayar. Ortaya çıkan dosyayı uygun olarak onaylamaz ve onaylayamaz. Uygunluğu yalnızca harici bir doğrulayıcı onaylayabilir.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/core:^3Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümConformance modülü iki genel tür sunar. ConformanceMode, hedef sözleşmeyi adlandıran (Plain, PdfUa1, PdfUa2, PdfA2, PdfA3, PdfA3b, PdfA3u, PdfA4, PdfA4e, PdfA4f) desteklenen bir enum türüdür. ConformancePolicy, bir modu bağımsız katılık anahtarlarıyla birleştiren değişmez bir değer nesnesidir.
Mod, aşağı akıştaki yazıcı kapıları için tek doğruluk kaynağıdır. Bu enum var olmadan önce motor, bir belgenin spesifikasyon etiketli olup olmadığını dağınık bayraklardan çıkarsıyordu. ConformanceMode::isTagged(), isAccessibility(), isArchival(), pdfaPart(), pdfaConformanceLetter() ve requiresPdf17() yöntemlerinin her biri, yazıcının doğrudan okuduğu türlenmiş bir yanıt döndürür. Katalog, /MarkInfo, dosya başlığı soy bilgisi ve Extensible Metadata Platform (XMP) pdfaid imleyicileri bildirilen amaçla uyumlu kalır.
Destek sınırını tam anlamıyla okuyun. NextPDF Core bu standartların tanımladığı yapıları yayar. ISO 19005-4:2020 §6.7.3, bir dosyanın hangi PDF/A varyantını ileri sürdüğünü kaydeden tanımlama şemasını belirtir. ISO 19005-4:2020, uygunluğun kendi Madde 5’inde belirtildiği gibi belirlendiğini ifade eder: üreten kitaplık tarafından değil, normatif gereksinimlere göre bir denetleme aracı tarafından. ISO 14289-2:2024 §6, uygunluğu bir dosyanın karşıladığı bir özellik olarak çerçeveler. Bir NextPDF modu ayarlamak, uygun bir dosya için gerekli bir girdidir. Tek başına bir uygunluk sonucu değildir.
Bu, Cascading Style Sheets (CSS) destek matrisindeki Doğrulanan ile İddia edilen ayrımıyla aynı disiplini izler. Bir yetenek, ancak hem geçen bir test veya oracle çalıştırmasına hem de alıntılanan bir maddeye sahip olduğunda Doğrulanan sayılır. Bunun dışındaki her şey, kitaplığın yaydığı bir öğedir: yararlıdır ancak uygunluk garantisi değildir. Uygunluk, kitaplık vaadine değil nihai dosyaya ve bir doğrulayıcıya aittir. Çıktıyı veraPDF ile doğrulayın (aşağıdaki “Uygunluk” bölümüne bakın).
Arşivleme çalışması için ikinci bir sınır önemlidir. OutputIntent sözlüğü, gömülü International Color Consortium (ICC) profili ve XMP uzantı şeması dahil olmak üzere PDF/A-4 yazımı, Core’da değil nextpdf/pro uzantısında bulunur. Yalnızca Core içeren bir kurulumda, Document::enablePdfA(), InvalidConfigException oluşturur; çünkü security.pdfa yeteneği kayıtlı değildir. Core hâlâ ConformanceMode ayrıştırıcısına sahiptir; bu nedenle iç gözlem ve PDF/Universal Accessibility (PDF/UA-2) etiketli yol çalışır ancak kendi başına PDF/A-4 dosyası yazmaz.
API yüzeyi
“API yüzeyi” başlıklı bölüm| Tür | Çeşit | Temel üyeler |
|---|---|---|
NextPDF\Conformance\ConformanceMode | enum: string | Plain, PdfUa1, PdfUa2, PdfA2, PdfA3, PdfA3b, PdfA3u, PdfA4, PdfA4e, PdfA4f; isTagged(), isAccessibility(), isArchival(), requiresPdfUa2PageTabs(), pdfaPart(): ?int, pdfaConformanceLetter(): string, requiresPdf17(): bool |
NextPDF\Conformance\ConformancePolicy | final readonly class | __construct(ConformanceMode $mode = PdfUa2, bool $strictUa2 = false, bool $rejectUnvalidatedLang = false, …); lax(), strictUa2(), withUax9IsolateSupport(), withoutAstShadowMode(), withBlackPointCompensation(), withStrictOcspProducedAtTolerance(), withAllowStaleOcsp() |
ConformancePolicy, kurucusunda tek bir değişmezi zorunlu kılar: katı PDF/UA-2 anahtarları yalnızca mod PdfUa2 olduğunda geçerlidir ve strictUa2 = true, rejectUnvalidatedLang = true değerini zorlar. Tutarsız bileşimler sessizce bozulmak yerine InvalidConfigException fırlatır.
Kod örneği — hızlı başlangıç
“Kod örneği — hızlı başlangıç” başlıklı bölüm<?php
declare(strict_types=1);
use NextPDF\Conformance\ConformanceMode;
$mode = ConformanceMode::PdfA4f;
// Introspect the declared contract — these drive writer-side gates.$mode->pdfaPart(); // 4$mode->pdfaConformanceLetter(); // 'F'$mode->requiresPdf17(); // false (PDF/A-4 is PDF 2.0 lineage)$mode->isArchival(); // trueKod örneği — Üretim
“Kod örneği — Üretim” başlıklı bölümCore ile birlikte gelen ve bir uygunluk sözleşmesini uçtan uca işleten yol, PDF/UA-2 etiketli yoldur. Bu çalıştırılabilir örnek examples/31-pdfua2-tagged.php dosyasıdır. Aynı zamanda katı PDF/UA-2 profili için oracle hedefidir.
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
$doc = Document::createStandalone();
// Set the tagged-PDF contract BEFORE writing content so the HTML pipeline// wires the TaggedContentEmitter at parser-construction time.$doc->enableTaggedPdf(lang: 'en');
$doc->setTitle('Accessible report');// … write content …
$doc->save(__DIR__ . '/out/report-ua2.pdf');
// The library has now emitted PDF/UA-2 structures. It has NOT asserted// conformance. Verify the file with the pinned veraPDF oracle://// php oracle/run.php pdfua.strict//// (Requires the veraPDF Docker image — opt-in; see "Conformance" below.)Sınır durumları ve tuzaklar
“Sınır durumları ve tuzaklar” başlıklı bölüm- PDF/A-4 yazımı Premium’dur. Yalnızca Core içeren bir kurulumda,
Document::enablePdfA(),InvalidConfigExceptionfırlatır (security.pdfakullanılamaz). Core, OutputIntent/ICC/XMP yayımına değil ayrıştırıcıya sahiptir./specifications/pdfa4/sayfasına bakın. - Şemsiye ve varyant durumları.
PdfA4şemsiye durumdur ve boş birpdfaConformanceLetter()bildirir. ISO 19005-4:2020 §6.7.3, ne PDF/A-4e ne de PDF/A-4f ile uyumlu olan bir dosyanın hiçbirpdfa:conformancesağlamamasını yönlendirir.PdfA4e/PdfA4fdeğerlerini yalnızca Ek B / Ek A varyantları için kullanın. - Katı PDF/UA-2 isteğe bağlıdır.
ConformancePolicy::lax()geriye dönük uyumlu varsayılandır.strictUa2(),/MarkInfo /Marked truedeğerini ve doğrulanmamış Best Current Practice (BCP) 47 dil etiketlerinin reddini zorlar. BunuPdfUa2olmayan bir modda etkinleştirmek hata fırlatır. isTagged()varyant duyarlıdır.Plain,PdfA2,PdfA3bvePdfA4eetiketsiz bildirir. Yazıcı, yalnızca arşivleme moduna bakarak bir yapı ağacı varsaymamalıdır.- Bir modun geçmesi dosyanın geçtiği anlamına gelmez.
PdfA4ayarlamak çıktıyı geçerli bir PDF/A-4 dosyası yapmaz. Bir doğrulayıcı çalıştırın.
Performans
“Performans” başlıklı bölümConformanceMode ve ConformancePolicy saf değer türleridir. Enum durum çözümlemesi ve match sevki O(1)‘dir; değişmez ilke nesnesi dışında tahsis yapılmaz. Yazma yoluna ölçülebilir bir maliyet eklemezler. Modül bütçesini ayrıştırıcı değil yazıcı belirler (wall_ms: 1500). veraPDF oracle’ı, belge oluşturmanın bir parçası değil bant dışı bir sürekli tümleştirme (CI) adımıdır.
Güvenlik notları
“Güvenlik notları” başlıklı bölümKatı anahtarlar, ConformancePolicy üzerinde hataya-kapalı güvenlik davranışını kapılar: securityPkiRfc5280Strict (Request for Comments (RFC) 5280 §6 yol doğrulaması), strictOcspProducedAtTolerance (RFC 6960 §4.2.2.1 sapma penceresi) ve allowStaleOcsp (varsayılan false; Open Certification Status Protocol (OCSP) yanıtlarından nextUpdate içermeyenleri reddet). Bu varsayılanlar temkinlidir ve belgelenen geriye dönük uyumluluk stratejisine göre gelecekteki bir ana sürümde katı davranışa döner. İmza yolu ayrıntıları için güvenlik modülüne ve proje tehdit modeline bakın.
Uygunluk
“Uygunluk” başlıklı bölümNextPDF uygunluğu onaylamaz. Aşağıdaki standartların tanımladığı yapıları yayar. Bir dosyanın uyumlu olup olmadığına ayrı bir doğrulayıcı karar verir.
| Standart | Madde | NextPDF Core ne yapar | Durum |
|---|---|---|---|
| ISO 14289-2:2024 (PDF/UA-2) | §6 | Yapı ağacını, /MarkInfo /Marked true (katı), /Lang, pdfuaid XMP’yi Core etiketli yol üzerinden yayar | Doğrulanan profil: veraPDF binary’si mevcut olduğunda (isteğe bağlı kapı), veraPDF oracle’ı tarafından doğrulanan pdfua.strict (php oracle/run.php pdfua.strict) |
| ISO 19005-4:2020 (PDF/A-4) | §6.7.3 | Şu ayrıştırıcıyı yayar: pdfaid:part / pdfa:conformance; kaynak: ConformanceMode | İddia edilen (ayrıştırıcı yayımı, birim testleriyle); PDF/A-4 dosya yazımı yalnızca Premium’dur |
| ISO 32000-2:2020 (PDF 2.0) | §7.5.2 | Temel catalog/document yapısı | İddia edilen (temel motor davranışı) |
Destek uygunluk değildir. NextPDF Core, PDF/UA-2 ve PDF/A-4 tanımlama yapılarını yayar; uygulama kanıtı tests/Unit/Conformance/ içindedir. Bir dosyanın PDF/A-4 veya PDF/UA-2 ile uyumlu olduğunu yalnızca ilgili profili çalıştıran bir doğrulayıcı ileri sürebilir. ISO 19005-4:2020 Madde 5 uyarınca, uygunluk belirlemesi üreten kitaplığın değil doğrulayıcının işidir.
veraPDF kapılaması, gereksinimini açıkça ortaya koyar. Oracle (oracle/run.php, oracle/lib/OracleRunner.php), sabitlenmiş bir veraPDF Docker görüntüsüne kabuk çağrısı yapar. Docker veya görüntü mevcut olmadığında, çalıştırıcı 2 koduyla (altyapı hatası) çıkar ve hiçbir şeyi doğrulamaz. pdfua.strict profili bu nedenle isteğe bağlı bir uygunluk kapısıdır. Uygunluğu yalnızca veraPDF binary’sinin mevcut olduğu makinelerde kanıtlar. NextPDF hiçbir gömülü doğrulayıcı içermez ve onun yokluğunda hiçbir uygunluk iddiasında bulunmaz.
Alıntılar, NextPDF uygunluk derleminden açımlanmıştır. Tam 64 karakterlik reference_id özetleri, sayfa ön bilgisinde ve _normative-evidence-conf.md içinde kayıtlıdır.
Ayrıca bakınız
“Ayrıca bakınız” başlıklı bölüm- Compliance modülü — PDF/R-1 doğrulayıcı, Arlington dilbilgisi ve yaşam döngüsü araçları
- Accessibility modülü — PDF/UA-2 etiketli içerik yayıcısı
- PDF/A-4 spesifikasyon eşlemesi — ISO 19005-4 özellik kapsamı ve açık kapsam dışı bırakmalar
- PDF/UA-2 spesifikasyon eşlemesi — ISO 14289-2 erişilebilirlik eşlemesi
- Güvenlik modülü — imza yolu katı anahtarları