Uyumluluğu doğrulama: süreç içi ön denetim ve harici kâhin
Bir bakışta
“Bir bakışta” başlıklı bölümNextPDF’in saf PHP, süreç içi uyumluluk doğrulayıcılarını hızlı bir yapısal ön denetim olarak çalıştırmak ve ardından yetkili uyumluluk kararını bağımsız bir doğrulayıcıya bırakmak için bu tarifi kullanın. Süreç içi denetimler gereklidir, ancak yeterli değildir: temiz bir sonuç yapısal bir gerçektir; uyumluluk kararı değildir. Bu tarif, examples/33-validate-conformance.php dosyasını ve onun tests/Cookbook/Php/ValidateConformanceRecipeTest.php test düzeneğini kullanır.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/core:^3Süreç içi doğrulayıcılar harici bir araç zinciri gerektirmez. Yetkili geçit adımı için PATH üzerinde harici bir doğrulayıcıya ihtiyacınız vardır. Örnekte veraPDF kullanılır. Bir Pro veya Enterprise paketine ihtiyacınız yoktur.
Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümNextPDF, \NextPDF\Compliance\Validator altında süreç içi doğrulayıcılar sağlar. Bunlar, harici bir süreç başlatmadan belirli normatif değişmezleri doğrular:
PdfRValidator— ISO 23504-1 (PDF/R-1) §5/§6 bayt akışı denetimlerini çalıştırır: dosya başlığı izin listesi, oluşum-0 nesneleri, §6.5.7 sayfa içeriği işleci izin listesi (yalnızcaq/Q/cm/Do) ve §6.4.3 Info sözlüğü anahtar izin listesi. Yalın birPdfRValidationFinding[]döndürür; boş bir liste, geçide tabi her §6 denetiminin geçtiği anlamına gelir.ArlingtonValidator— PDF Association’ın makine tarafından okunabilir Arlington dil bilgisini yalnızca rapor kipinde çalıştırır. Yapıyı asla geçide tabi tutmaz ve denetim tüketicilerinin bilinen bir yukarı akış anlık görüntüsüyle bağlantı kurabilmesi için her bulguda sabitlenmiş dil bilgisi işleme SHA değerini kaydeder.
Bu denetimlerin kapsamı bilinçli olarak sınırlandırılmıştır. Bir yayımlama sözleşmesi ile bir belirtim arasındaki sapmayı yakalarlar, ancak PDF/A-4 veya PDF/UA-2 gibi bir profil için ISO uyumluluğunu kanıtlamazlar. Bu belirlemeyi bağımsız bir doğrulayıcı yapar ve onun kararı yapı geçididir (ISO 19005-4 §6.7.3 bunu PDF/A için açıkça belirtir). Bu tarif sınırı net tutar: ön denetimi süreç içinde çalıştırır, ardından kararı veren harici kâhin komutunu yazdırır ve çalıştırır.
Aşağıdaki şema iki aşamalı geçidi gösterir. Akışı tek bir kural yönetir: uyumluluk olarak yalnızca harici kâhinin kararı bildirilebilir.
API yüzeyi
“API yüzeyi” başlıklı bölümAPI yüzeyi PHPDoc’tan üretilir. Şu ana giriş noktalarını kullanın:
\NextPDF\Compliance\Validator\PdfRValidator::validate(string $pdfBytes): list<PdfRValidationFinding>\NextPDF\Compliance\Validator\PdfRValidationFinding(salt okunur:clause,severity,message)\NextPDF\Compliance\Validator\ArlingtonValidator::validateReportOnly(string $pdfPath): list<ArlingtonFinding>\NextPDF\Core\Document::output(?string $filename, OutputDestination $dest): string(ham baytlar içinOutputDestination::String)
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);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Compliance\Validator\PdfRValidator;use NextPDF\Contracts\OutputDestination;use NextPDF\Core\Document;
$doc = Document::createStandalone();$doc->addPage();$doc->setFont('helvetica', '', 12);$doc->cell(0, 10, 'Document under conformance review.', newLine: true);
$bytes = $doc->output(dest: OutputDestination::String);
$findings = (new PdfRValidator())->validate($bytes);
// A finding list is a structural fact, not a conformance verdict.echo $findings === [] ? "No in-process PDF/R-1 findings (necessary, not sufficient).\n" : count($findings) . " in-process finding(s); not a conformance verdict.\n";Kod örneği — üretim
“Kod örneği — üretim” başlıklı bölümÜretimde, süreç içi doğrulayıcıyı bariz yapısal sapmalarda hızla başarısız olan düşük maliyetli bir geçit olarak ele alın. Ardından harici kâhini yetkili uyumluluk kararı olarak çalıştırın. Uyumluluk olarak yalnızca kâhinin kararı bildirilebilir.
$bytes = $doc->output(dest: OutputDestination::String);$doc->save($out);
// 1. In-process pre-check — necessary, not sufficient.$findings = (new PdfRValidator())->validate($bytes);foreach ($findings as $finding) { fwrite(STDERR, sprintf("[%s] §%s — %s\n", $finding->severity, $finding->clause, $finding->message));}
// 2. The authoritative gate — the external validator decides.$exitCode = 0;$report = [];exec('verapdf --flavour 4 ' . escapeshellarg($out), $report, $exitCode);
if ($exitCode !== 0) { fwrite(STDERR, "veraPDF FAILED — not reported conforming\n"); fwrite(STDERR, implode("\n", $report) . "\n"); exit(1);}
echo "veraPDF PASS — the validator reports the file conforming\n";Örneği php examples/33-validate-conformance.php ile çalıştırın. Sıradan bir PDF oluşturur ve süreç içi bulguları yazdırır. Sıradan bir PDF’in PDF/R-1 bulguları üretmesi beklenir; asıl öğretici nokta da bu sonuçtur. Örnek daha sonra yetkili harici kâhin komutunu yazdırır.
Uç durumlar ve dikkat edilmesi gerekenler
“Uç durumlar ve dikkat edilmesi gerekenler” başlıklı bölüm- Gerekli, ancak yeterli değil. Boş bir
PdfRValidatorbulgu listesi, geçide tabi §6 denetimlerinin geçtiği anlamına gelir; bundan fazlası değildir. Bu, bir PDF/A-4 veya PDF/UA-2 uyumluluk iddiası değildir. Tek başına bir süreç içi sonuçtan asla uyumluluk bildirmeyin. - Sıradan bir PDF, tasarımı gereği PDF/R-1’i geçemez. PDF/R-1 yalnızca görüntü içeren bir raster profilidir; sıradan bir metin PDF’i, haklı olarak §6.5.7 ve §6.4.3 bulguları üretir. Örnek, asıl noktayı vurgulamak için bunu bilinçli olarak gösterir: süreç içi çıktı yapısal bir gerçektir, karar değildir.
- Arlington yalnızca rapor amaçlıdır.
ArlingtonValidator::validateReportOnly()asla istisna fırlatmaz ve asla geçide tabi tutmaz. Yalnızca dil bilgisi kipinde, sabitlenmiş dil bilgisi SHA değerinin yüklendiğini kanıtlayan birinfobulgusu yayar; dil bilgisi gerçekleştirilmediğinde boş bir liste döndürür. Bunun üzerine bir pass/fail geçidi kurmayın — bu bir çapraz denetim eseridir. - Baytlar mı, dosya mı.
PdfRValidator::validate()ham bayt dizesini alır (OutputDestination::String); harici kâhinin dosya yoluna ihtiyacı vardır. Kâhin adımı için dosyayısave()ile kaydedin. - Boş girdi.
PdfRValidator::validate()işlevine boş veya başlıksız bir dize geçirildiğinde, istisna fırlatmak yerine bir§6.2.2hata bulgusu döndürür. Bulgu listesini denetleyin; istisna varsaymayın.
Performans
“Performans” başlıklı bölümSüreç içi doğrulayıcılar, PDF üzerinde tek geçişli düzenli ifade ve bayt taramaları kullanır. Tipik belgelerde düşük bellek ayırma kullanımıyla hızlıdırlar ve 2000 ms / 128 MB bütçesinin içinde kalırlar. Harici kâhin mevcutsa duvar saati süresini belirleyen ana etken olur, ancak süreç dışında çalışır. Anlamsal yeniden üretilebilirlik profili geçerlidir. Örneğin değeri, gözlemlenebilir doğrulama davranışıdır ve test düzeneği bu davranışı yapısal bir soyut sözdizimi ağacı (AST) ile üst veri karşılaştırması aracılığıyla denetler.
Güvenlik notları
“Güvenlik notları” başlıklı bölümVeri yerleşimi ve KKB azaltma önlemleri
“Veri yerleşimi ve KKB azaltma önlemleri” başlıklı bölümDoğrulayıcılar belge baytlarını süreç içinde okur ve hiçbir şey süreçten dışarı çıkmaz. Harici kâhin ise dosyayı alır. Barındırılan bir doğrulayıcı çalıştırırsanız, belge içeriği sınırınızın dışına çıkar. Hassas içerikler için yerel bir doğrulayıcı ikili dosyasını tercih edin veya doğrulamadan önce karartma uygulayın.
Güvenli telemetri ve günlük temizleme
“Güvenli telemetri ve günlük temizleme” başlıklı bölümBulgular nesne yollarını ve işleç parçalarını alıntılayabilir. Örnek, bulguları STDERR’e ve sabit bir ilerleme satırını STDOUT’a yazar. Hassas belgelerde bulgu günlüklerini paylaşılan toplama noktalarının dışında tutun. Ham PDF baytlarını asla günlüğe kaydetmeyin.
Tehdit modeli
“Tehdit modeli” başlıklı bölümTemiz bir süreç içi sonuç, bütünlük veya sahicilik sinyali değildir. Düşmanca bir üretici, kapsamı sınırlı süreç içi denetimleri geçen ancak tam doğrulayıcıda başarısız olan ya da iyi biçimlendirilmiş ama yanıltıcı olan bir dosya oluşturabilir. Süreç içi geçişi hızlı bir filtre olarak ele alın, asla güven sinyali olarak değil.
FIPS kipi davranışı
“FIPS kipi davranışı” başlıklı bölümBu tarif hiçbir kriptografik işlem gerçekleştirmez. Federal Information Processing Standards (FIPS) kipi bu tarifin davranışını değiştirmez. Güven materyalinin imzalanması, şifrelenmesi veya özetlenmesi gerçekleşmez.
Uyumluluk
“Uyumluluk” başlıklı bölüm| Beyan | Belirtim | Madde | reference_id |
|---|---|---|---|
| PDF/R-1 sayfa içeriği yalnızca q/Q/cm/Do işleç izin listesini kullanır. | ISO 23504-1 | §6.5.7 | |
| PDF/R-1 sayfaları yalnızca görüntü içeren raster içeriğidir. | ISO 23504-1 | §6.5.5 | |
| PDF/R-1, belge bilgisi sözlüğü anahtarlarını kısıtlar. | ISO 23504-1 | §6.4.4 | |
| Arlington dil bilgisi, makine tarafından okunabilir bir nesne modeli çapraz denetimidir. | Arlington PDF Model | grammar | |
| Uyumluluğa üretici değil, bir doğrulayıcı karar verir. | ISO 19005-4 | §6.7.3 |
NextPDF’in süreç içi doğrulayıcıları belirli normatif değişmezleri doğrular. Destek uyumluluk değildir; doğrulama sertifikalandırma değildir. Temiz bir süreç içi sonuç ISO uyumluluğunu kanıtlamaz; bu belirlemeyi bağımsız bir doğrulayıcı (örneğin veraPDF) yapar. Onun kararını yapı geçidi olarak kullanın.