PDF/A-4 uygunluğu: NextPDF, ISO 19005-4 için neler üretir
Bir bakışta
“Bir bakışta” başlıklı bölümKapsam beyanı. NextPDF, PDF/A-4’e uygun olması amaçlanan çıktı üretir. Kitaplık uygunluk iddiasında bulunmaz; bu kararı veraPDF gibi bir doğrulayıcı verir.
PDF/A-4, PDF 2.0 tabanlı arşivleme profili olan ISO 19005-4:2020 standardıdır. NextPDF Core, ConformanceMode ayraç değerini taşır (PdfA4, PdfA4e, PdfA4f). Premium nextpdf/pro motoru, OutputIntent’i, gömülü ICC profilini ve Extensible Metadata Platform (XMP) pdfaid tanımlama şemasını save() sırasında üretir. Bu yapıları kitaplık üretir; uygunluk kararını veraPDF verir. ISO 19005-4 §6.7.3 bunu açıkça belirtir: pdfaid:part/pdfaid:rev özellikleri “tek başlarına uygunluğu belirlemez”.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/core:^3composer require nextpdf/pro # OutputIntent + ICC + XMP authoringCore, security.pdfa yeteneğini kaydeder; ancak nextpdf/pro olmadığında bu yeteneği kullanılamaz olarak bildirir. Bu durumda enablePdfA(), uygun olmayan bir dosya üretmek yerine yükseltme yolu içeren bir InvalidConfigException fırlatır.
Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümDocument::enablePdfA(?object $version = null), bir PdfAVersion enum girdisini bir ConformanceMode durumuna eşler. Tanınmayan girdilerde varsayılan olarak ConformanceMode::PdfA4 kullanılır ('4e' → PdfA4e, '4f' → PdfA4f). Mod, uygun bir dosya için üç üretim yükümlülüğünü belirler:
- OutputIntent + ICC — §6.2.3, uygun bir dosyanın renk karakteristiklerini, bir
DestOutputProfileInternational Color Consortium (ICC) akışına başvuran bir PDF/A-4 OutputIntent ile belirtmesine izin verir. §6.2.4.1 uyarınca bu, aygıttan bağımsız rengi belirtmenin izin verilen iki yolundan biridir (diğeri, aygıttan bağımsız renk uzaylarını doğrudan belirtmektir). OutputIntent, standardın koşulsuz bir gereksinimi değil, NextPDF’in izlediği yoldur. pdfaidtanımlaması — §6.7.3, belge düzeyindeki XMP’de PDF/A tanımlama şemasının (AIIMpdfaidad alanı)pdfaid:part/pdfaid:revile bulunmasını gerektirir. PDF/A-4e ve PDF/A-4f ayrıcapdfa:conformancedeğerini ayarlar (E / F). §6.7.3, ikisine de uymayan bir dosyanın hiçbirpdfa:conformancedeğeri sağlamaması gerektiğini belirtir.- Yazı tipi gömme — §6.2.10, işleme için kullanılan tüm yazı tiplerinin gömülmesini gerektirir.
NextPDF bu yapıları üretir; §5 uygunluk belirlemesini çalıştırmaz. Bu görev veraPDF’ye aittir ve §6.7.3 bu belirlemeyi ilgili sürece bırakır.
API yüzeyi
“API yüzeyi” başlıklı bölüm| Yöntem | Etki |
|---|---|
enablePdfA(?object $version = null): static | Şu değerlere yönlendirir: ConformanceMode::PdfA4/PdfA4e/PdfA4f; OutputIntent + ICC + XMP üretimini save() aşamasına zamanlar. Şunu fırlatır: InvalidConfigException|PageLayoutException|CompressionException nextpdf/pro mevcut değilse. |
ConformanceMode::pdfaPart(): ?int | Etkin modun ISO 19005 bölümünü döndürür (PdfA4* için 4). |
ConformanceMode::pdfaConformanceLetter(): string | Şu harfi döndürür: pdfa:conformance harfi (E / F) ya da boş. |
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\Core\Document;use NextPDF\Exception\InvalidConfigException;use NextPDF\Support\CapabilityRegistry;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/archival.pdf';
$registry = CapabilityRegistry::getInstance();if (!$registry->get('security.pdfa')->isAvailable()) { fwrite(STDERR, "PDF/A-4 requires nextpdf/pro.\n"); exit(1);}
try { $doc = Document::createStandalone(); $doc->enablePdfA(); // ConformanceMode::PdfA4 $doc->setTitle('Archival Record 2026-0042'); $doc->setLanguage('en'); $doc->writeHtml('<h1>Archival record</h1><p>Body.</p>'); $doc->save($out); // OutputIntent + ICC + XMP scheduled here} catch (InvalidConfigException $e) { fwrite(STDERR, $e->getMessage() . "\n"); exit(1);}
echo "Wrote {$out} — validate: verapdf --flavour 4 {$out}\n";Kod örneği — Üretim
“Kod örneği — Üretim” başlıklı bölümDoğrulayıcı kararını derleme geçidi olarak kullanın. Çıktı üzerinde verapdf --flavour 4 komutunu çalıştırın ve sıfır olmayan bir çıkış kodu dönerse derlemeyi başarısız sayın. Geçit doğrulayıcının kararıdır; kitaplığın ürettiği şey bu kararın girdisidir, hiçbir zaman kararın kendisi değildir. Geçit denetimli hattın tamamı için bkz. /cookbook/php/pdfa4-conformance-gate/.
Sınır durumlar ve tuzaklar
“Sınır durumlar ve tuzaklar” başlıklı bölüm- İçerikten önce etkinleştirin. İçerik eklemeden önce
enablePdfA()çağırın. Geriye dönük etkinleştirme, zaten yazılmış nesneleri yeniden işlemez. - Şifreleme yok. PDF/A,
Encryptanahtarını yasaklar. Bir PDF/A belgesindesetEncryption()çağırmayın. Şifreleme arşivleme bütünlüğü değil, gizlilik sağlar; burada bu iki kavram birbirini dışlar. pdfa:conformancekoşulludur. Bu değer yalnızca PDF/A-4e ve PDF/A-4f için ayarlanır. Düz bir PDF/A-4 dosyasında bunu üretmek tek başına bir uygunluk ihlalidir (§6.7.3) —ConformanceModedurumu bunu yapısal olarak önler.- PDF/A-4f ekleri. Bir PDF/A-4f dosyasındaki gömülü dosyalar, §6.7.5 uyarınca
FveUFanahtarlarını taşımalıdır (Desc önerilir). Bu yapı, ZUGFeRD/Factur-X karma yolunu destekler.
Performans
“Performans” başlıklı bölümOutputIntent + ICC gömme işlemi, save() aşamasında sabit boyutlu bir ICC akışı (çalışma uzayı profili) ve XMP paketini ekler. Tipik bir belge için bütçe, duvar saati ≤ 1500 ms ve tepe bellek ≤ 128 MB’tır.
Güvenlik notları
“Güvenlik notları” başlıklı bölümPDF/A-4 şifrelemeyi yasaklar. Profil bir güvenlik denetimi değil, arşivleme ve kalıcılık kısıtıdır. Anahtar saklama ve doğrulayıcı politikası bu profilin kapsamı dışındadır; bkz. güven merkezi.
Veri ikametgâhı ve PII azaltmaları
“Veri ikametgâhı ve PII azaltmaları” başlıklı bölümPDF/A-4 üretimi süreç içinde çalışır ve yalnızca belgeyi, gömülü ICC profilini ve XMP paketini yazar. Hiçbir içerik süreç dışına çıkmaz. Kaynak içerikteki kişisel olarak tanımlanabilir bilgiler (PII) entegratörün sorumluluğundadır. Profil hiçbir bilgiyi karartmaz.
Güvenli telemetri ve günlük temizleme
“Güvenli telemetri ve günlük temizleme” başlıklı bölümÖrnek, STDERR’e yalnızca çıktı yolunu ve doğrulayıcı komutunu yazar. Belge baytlarını hiçbir zaman günlüğe yazmaz. Tarif, NEXTPDF_COOKBOOK_OUTPUT değerini dikkate alır ve PDF’yi asla STDOUT’a yazmaz.
Tehdit modeli
“Tehdit modeli” başlıklı bölümPDF/A-4 dosyası erişim denetimi sağlamaz. Dosyaya sahip olan herkes dosyayı okuyabilir. Profil gizliliği değil, işleme kalıcılığını destekler. OutputIntent ICC akışını herkese açık kabul edin.
FIPS modu davranışı
“FIPS modu davranışı” başlıklı bölümPDF/A-4 üretimi hiçbir kriptografik işlem gerçekleştirmez. Bir PDF/A-4 dosyasındaki dijital imza (PDF/A-4 §6.5 PAdES profillerine izin verir) ayrı bir imza tarifinin konusudur ve o tarifin FIPS duruşunu devralır. Bu sayfa hiçbir imzalama iddiasında bulunmaz.
Uygunluk
“Uygunluk” başlıklı bölüm| İddia | Standart | Madde | reference_id |
|---|---|---|---|
| Bir PDF/A-4 dosyası, renk karakteristiklerini bir DestOutputProfile ICC profiline başvuran bir PDF/A OutputIntent ile belirtebilir. | ISO 19005-4 | §6.2.3 | |
| Aygıttan bağımsız renk, doğrudan ya da OutputIntent DestOutputProfile aracılığıyla dolaylı olarak belirtilebilir (izin verilen iki yoldan biri). | ISO 19005-4 | §6.2.4.1 | |
| PDF/A sürümü, belge XMP’sindeki PDF/A tanımlama (pdfaid) şeması aracılığıyla tanımlanır. | ISO 19005-4 | §6.7.3 | |
| pdfaid:part / pdfaid:rev tek başlarına uygunluğu belirlemez; belirleme, Madde 5 uyarınca gerçekleştirilir. | ISO 19005-4 | §6.7.3 | |
| Ne PDF/A-4e’ye ne de PDF/A-4f’ye uyan bir dosya, bir pdfa:conformance değeri sağlamamalıdır. | ISO 19005-4 | §6.7.3 | |
| PDF/A-4f’deki gömülü dosyalar için F ve UF anahtarları gerekir (Desc önerilir). | ISO 19005-4 | §6.7.5 | |
| İşleme için kullanılan tüm yazı tipleri gömülmelidir. | ISO 19005-4 | §6.2.10 | |
| Saydamlık / renk kullanımı, beyan edilmiş bir OutputIntent’e bağlıdır. | ISO 19005-4 | §6.2.9 |
Alıntılar, madde kimliği ve doğrulama derlemesine işaret eden reference_id göstergelerinden oluşur. Hiçbir standart metni birebir aktarılmaz; NextPDF maddeleri kendi sözcükleriyle özetler.