Uyumluluk: PDF/R-1 doğrulayıcısı, Arlington dil bilgisi ve yaşam döngüsü araçları
Bir bakışta
“Bir bakışta” başlıklı bölümNextPDF\Compliance, tamamlanmış bir Portable Document Format (PDF) dosyasını okuyan ve dosyanın normatif bir sözleşmeden hangi noktalarda ayrıldığını raporlayan bayt akışı doğrulayıcıları ile bir dil bilgisi çapraz denetimi sunar. Bir doğrulayıcı sıfır bulgu döndürdüğünde, sonuç yalnızca uyguladığı maddeler açısından denetlenmiş sayılır. Bu, kapsamlı bir sertifika değildir.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/core:^3Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümModül üç bölümden oluşur.
PdfRValidator, aday bir ISO 23504-1:2020 (PDF/R-1) bayt akışını doğrular. Yazıcının iç durumu üzerinde değil, ham baytlar üzerinde çalışır. Yazıcının üretmeyi amaçladığı çıktı ile belirtimin gerektirdiği çıktı arasındaki sapmayı yakalar ve son denetim katmanıdır. Uygulanan madde kümesi v5.1.0 kümesine karşılık gelir: §5 sürüm tanımlama açıklaması, §6.2.2/§6.2.3 başlık izin listesi, §6.2.4 üretim-0 ve nesne akışı yasağı, §6.5.7 içerik akışı işleci izin listesi (yalnızca q, Q, cm, Do), §6.6.1 görüntü XObject anahtarı izin listesi, §6.4.3 Info sözlüğü anahtarı izin listesi ve §6.3 Catalog anahtarı izin listesi. §6.7 artımlı güncellemeler ve §6.8 şifreleme, bu ilk küme için açıkça kapsam dışıdır ve claims.json içinde bu şekilde bildirilir. Doğrulayıcı ilk bulguda durmaz. Tam farkı görebilmeniz için her sapmayı tek geçişte toplar.
PdfRConformancePolicy, PDF/R-1 çevresindeki önerilen ancak bilgilendirici bantlar için değişmez bir ilkedir. Normatif §6 temeli hiçbir zaman yapılandırılabilir değildir. İlke yalnızca §A.5 uygulama sınırı önerilerini, §6.6.1 çok şeritli yapının caydırılmasını ve aşağı akış PDF/A yeniden sınıflandırması için §A.6 XMP Extensible Metadata Platform (XMP) gereksinimini denetler.
ArlingtonValidator, üst akış PDF Association Arlington PDF modelini yalnızca rapor modunda çalıştırır. Mevcut döngü boyunca tavsiye niteliğindedir: validateReportOnly() asla özel durum fırlatmaz. Üç mod arasında kademeli olarak geri dönüş yapar. Referans denetleyici ikili dosyası kullanılabilir olduğunda, yapılandırılmış bulguları ayrıştırır. Yalnızca sabitlenmiş dil bilgisi kullanılabilir olduğunda, sabitlenmiş dil bilgisinin yüklendiğini kanıtlayan tek bir info bulgusu üretir. Dil bilgisi kullanılamadığında, boş bir liste döndürür. Bir WaiverRegistry, düzenleyicinin bilinen ve kabul edilebilir uyuşmazlıkları denetim izini koruyarak bastırmasına olanak tanır.
Dürüstlük kuralı, Cascading Style Sheets (CSS) destek matrisi ve uygunluk modülüyle aynıdır. Bir madde ancak başarılı bir test mevcut olduğunda ve normatif madde alıntılandığında Doğrulanmış sayılır. Uygulanmış ancak kendisine özgü başarılı bir test düzeneği bulunmayan bir madde İddia edilmiş sayılır. Kapsam dışı maddeler açıkça belirtilir. Belirsiz bırakılmazlar. Sıfır bulgu içeren bir PdfRValidator sonucu yalnızca denetlediği maddeleri ileri sürer. Uygulamadığı §6.7 veya §6.8 hakkında hiçbir iddiada bulunmaz.
API yüzeyi
“API yüzeyi” başlıklı bölüm| Tür | Çeşit | Temel üyeler |
|---|---|---|
NextPDF\Compliance\Validator\PdfRValidator | final class | validate(string $pdfBytes): list<PdfRValidationFinding> |
NextPDF\Compliance\Validator\PdfRValidationFinding | final readonly class | string $clause, 'error'|'warning'|'info' $severity, string $message |
NextPDF\Compliance\Profile\PdfRConformancePolicy | final readonly class | __construct(bool $enforceA5ImplementationLimits = true, bool $rejectMultiStripPages = false, bool $requireXmpForA6Compatibility = false); lax(), strictArchival() |
NextPDF\Compliance\Validator\ArlingtonValidator | final class | validateReportOnly(string $pdfPath): list<ArlingtonFinding> |
NextPDF\Compliance\Validator\WaiverRegistry | final class | isWaived(string $validator, string $ruleId, string $scopeKey): bool |
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\Compliance\Validator\PdfRValidator;
$validator = new PdfRValidator();$findings = $validator->validate(file_get_contents('candidate.pdf'));
if ($findings === []) { // Zero divergences from the §6 clauses PdfRValidator implements. // This is NOT a PDF/R-1 certificate — §6.7 and §6.8 are not checked. echo "No PDF/R-1 §6 divergences detected (implemented clause set).\n";} else { foreach ($findings as $f) { echo "[{$f->severity}] §{$f->clause}: {$f->message}\n"; }}Kod örneği — üretim
“Kod örneği — üretim” başlıklı bölüm<?php
declare(strict_types=1);
use NextPDF\Compliance\Validator\ArlingtonValidator;use NextPDF\Compliance\Validator\ArlingtonGrammarLoader;use NextPDF\Compliance\Validator\WaiverRegistry;
$validator = new ArlingtonValidator( waivers: new WaiverRegistry(/* loaded waiver entries */), grammar: new ArlingtonGrammarLoader(/* pinned submodule path */), adapter: null, // grammar-only mode when the reference checker is absent);
// Advisory by contract — never throws on findings.$findings = $validator->validateReportOnly('artifact.pdf');
foreach ($findings as $finding) { // Each finding pins the Arlington grammar commit SHA for provenance. logger()->info('arlington', [ 'rule' => $finding->ruleId, 'severity' => $finding->severity, 'grammarSha' => $finding->grammarSha, ]);}Sınır durumları ve dikkat edilecek noktalar
“Sınır durumları ve dikkat edilecek noktalar” başlıklı bölümPdfRValidatortam bir ayrıştırıcı değil; normal ifade tabanlıdır.NextPDF\Writer\PdfRWriterbileşeninin belirlenimci çıktısını hedefler. Bunu genel bir PDF ayrıştırıcısı olarak değil, o yazıcı için bir sapma algılayıcısı olarak kullanın.- Sıfır bulgu ≠ tam PDF/R-1 uygunluğu. §6.7 (artımlı güncellemeler) ve §6.8 (şifreleme), v5.1.0 kümesinde uygulanmaz ve
claims.jsoniçinde kapsam dışı olarak bildirilir. Temiz bir sonucu “uygulanan madde kümesinde sapma yok” olarak değerlendirin, daha fazlası olarak değil. - Arlington tavsiye niteliğindedir. Mevcut döngüde,
validateReportOnly()derlemeyi asla başarısız kılmaz. Sürekli tümleştirme (CI) sonucu tüketir ancak buna dayalı bir geçit uygulamaz. - PDF/A International Color Consortium (ICC) doğrulaması burada yer almaz. ISO 19005-4:2020 §6.2.2 OutputIntent ICC doğrulaması, Core’un Compliance modülünde değil, Enterprise
PdfAManager(nextpdf/pro) içinde bulunur. Core’un PDF/A yüzeyi yalnızcaConformanceModeayırıcısından ibarettir. - Feragatler denetim izini korur. Feragat edilen bir kural, bulgu listesinden bastırılır, ancak feragat girdisi neden feragat edildiğinin kaydı olarak kalır.
Performans
“Performans” başlıklı bölümPdfRValidator::validate(), bayt akışı üzerinde sınırlı normal ifade gezintileriyle gerçekleştirilen tek bir doğrusal geçiştir. Maliyet, belge boyutuyla ölçeklenir ve modül bütçesinin oldukça içinde kalır. Yalnızca dil bilgisi modunda, ArlingtonValidator, yükleme kanıtı bulgusu için O(dil-bilgisi-kuralı-sayısı) karmaşıklığında çalışır. Referans denetleyici yolu bir alt işlem olarak çalışır ve NextPDF tarafından değil, üst akış aracı tarafından sınırlandırılır. Bu, bant dışı bir CI adımıdır.
Güvenlik notları
“Güvenlik notları” başlıklı bölümBu doğrulayıcılar güvenilmeyen PDF baytlarını okur. PdfRValidator, anahtar çıkarımından önce parantezli ve onaltılık değişmezleri ayıklar; böylece özel olarak hazırlanmış bir Creator dizesi sahte bir /Name anahtarı enjekte edemez (ISO 32000-1:2008 §7.3.4.2 kaçış işleme). Arlington bağdaştırıcısı, üst akış denetleyicisini sınırlı bir alt işlem olarak çalıştırır. Zaman aşımını veya yürütme hatasını, kısmi çıktıya güvenmek yerine “bulgu yok” olarak değerlendirir. PDF ayrıştırma saldırı yüzeyi için proje tehdit modeline bakın.
Uygunluk
“Uygunluk” başlıklı bölüm| Standart | Madde | Compliance modülünün yaptığı işlem | Durum |
|---|---|---|---|
| ISO 23504-1:2020 (PDF/R-1) | §6.5.7 | PdfRValidator, {q,Q,cm,Do} içerik akışı işleci izin listesini zorunlu kılar | Doğrulanmış (birim + standart profili + tümleştirme testleri geçer) |
| ISO 23504-1:2020 (PDF/R-1) | §6.4.3 | PdfRValidator, Info sözlüğü anahtarı izin listesini zorunlu kılar | Doğrulanmış (testlerle desteklenir) |
| ISO 23504-1:2020 (PDF/R-1) | §6.7, §6.8 | v5.1.0 kümesinde uygulanmaz | Açık kapsam dışı (claims.json içinde bildirilir) |
| ISO 32000-2:2020 (PDF 2.0) | §7.5.2 | Catalog anahtarı izin listesi gezintisi | İddia edilmiş (normal ifade gezintisi; yapısal) |
| ISO 19005-4:2020 (PDF/A-4) | §6.7.3 | Conformance modülü aracılığıyla tanımlama şeması farkındalığı | Çapraz başvuru (bkz. /specifications/pdfa4/) |
Destek, uygunluk değildir. Hiçbir bulgu döndürmeyen bir PdfRValidator çalıştırması, yalnızca girdinin doğrulayıcının uyguladığı §6 maddelerinden sapmadığını kanıtlar. Dosyanın uyumlu bir PDF/R-1 dosyası olduğunu ileri sürmez: §6.7 ve §6.8 denetlenmez. Arlington çapraz denetimi tavsiye niteliğindedir ve asla uygunluk ileri sürmez. PDF/A-4 için yetkili doğrulayıcı veraPDF’tir ve bant dışında çalışır. veraPDF kâhini ve isteğe bağlı geçit uygulaması için uygunluk modülüne bakın.
Alıntılar, NextPDF uyumluluk derleminden başka sözcüklerle ifade edilmiştir. Tam 64 karakterlik reference_id özetleri, sayfa ön bilgisinde ve _normative-evidence-conf.md içinde kaydedilir.
Ayrıca bakınız
“Ayrıca bakınız” başlıklı bölüm- Conformance modülü —
ConformanceModeyönlendirmesi ve veraPDF kâhini - Audit modülü — denetim izi ve onay yüzeyi
- PDF/A-4 belirtim eşlemesi — ISO 19005-4 kapsamı ve kapsam dışı bölümleri
- Security modülü — PDF ayrıştırma tehdit modeli