İçeriğe geç

PDF/A-4 uygunluğu: NextPDF, ISO 19005-4 için neler üretir

Kapsam 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”.

Terminal window
composer require nextpdf/core:^3
composer require nextpdf/pro # OutputIntent + ICC + XMP authoring

Core, 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.

Document::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 DestOutputProfile International 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.
  • pdfaid tanımlaması — §6.7.3, belge düzeyindeki XMP’de PDF/A tanımlama şemasının (AIIM pdfaid ad alanı) pdfaid:part/pdfaid:rev ile bulunmasını gerektirir. PDF/A-4e ve PDF/A-4f ayrıca pdfa:conformance değerini ayarlar (E / F). §6.7.3, ikisine de uymayan bir dosyanın hiçbir pdfa:conformance değ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.

YöntemEtki
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(): ?intEtkin 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ş.
<?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";

Doğ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/.

  • İç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, Encrypt anahtarını yasaklar. Bir PDF/A belgesinde setEncryption() çağırmayın. Şifreleme arşivleme bütünlüğü değil, gizlilik sağlar; burada bu iki kavram birbirini dışlar.
  • pdfa:conformance koş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) — ConformanceMode durumu bunu yapısal olarak önler.
  • PDF/A-4f ekleri. Bir PDF/A-4f dosyasındaki gömülü dosyalar, §6.7.5 uyarınca F ve UF anahtarlarını taşımalıdır (Desc önerilir). Bu yapı, ZUGFeRD/Factur-X karma yolunu destekler.

OutputIntent + 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.

PDF/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.

PDF/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.

Ö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.

PDF/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.

PDF/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.

İddiaStandartMaddereference_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.