İçeriğe geç

PDF/A-4 çıktısı üretin ve veraPDF kararını derleme kapısı yapın

Bu nasıl yapılır kılavuzu, Premium PdfAManager ile Portable Document Format/Archive (PDF/A-4) çıktısının nasıl oluşturulacağını, veraPDF’nin nasıl çalıştırılacağını ve kararının derleme kapısı olarak nasıl kullanılacağını gösterir. NextPDF gerekli yapıtları yazar; uygunluk kararını doğrulayıcı verir. Akış, examples/32-pdfa4-icc.php dosyasındaki örneği izler.

  • Core kurulmuş olmalı: composer require nextpdf/core:^3.
  • Premium kurulmuş olmalı: composer require nextpdf/pro. PDF/A-4, bir Premium katmanı özelliğidir (Architecture Decision Record ADR-011). Premium olmadan enablePdfA(), yükseltme yolunu belirten bir InvalidConfigException fırlatır.
  • Kapı adımı için PATH üzerinde veraPDF bulunmalı.
  1. Yetenek kayıt defterinde security.pdfa öğesini yoklayın; böylece yalnızca Core içeren bir kurulum, yığın izlemesi yerine açık bir ileti gösterir.
  2. Belgeyi oluşturun, ardından içerik eklemeden önce enablePdfA() çağrısını yapın.
  3. Üst verileri ayarlayın ve içeriği yazın. setEncryption() çağrısını yapmayın; PDF/A, Encrypt anahtarını yasaklar.
  4. Belgeyi kaydedin. save() sırasında PdfAManager, OutputIntent’i, gömülü International Color Consortium (ICC) profilini ve Extensible Metadata Platform (XMP) uzantı şemalarını yazar.
  5. Çıktı üzerinde verapdf --flavour 4 komutunu çalıştırın. Sıfırdan farklı bir kodla sonlanırsa derlemeyi başarısız sayın. Kapı, doğrulayıcının verdiği karardır.
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
use NextPDF\Exception\InvalidConfigException;
use NextPDF\Support\CapabilityRegistry;
$out = __DIR__ . '/archival.pdf';
// Step 1 — probe before activating a Premium-gated feature.
$registry = CapabilityRegistry::getInstance();
if (!$registry->get('security.pdfa')->isAvailable()) {
fwrite(STDERR, "PDF/A-4 requires nextpdf/pro. Run: composer require nextpdf/pro\n");
exit(1);
}
try {
$doc = Document::createStandalone();
// Step 2 — enable PDF/A-4 before content. Defaults to PdfA4.
$doc->enablePdfA();
// Step 3 — metadata and content. No setEncryption() on a PDF/A document.
$doc->setTitle('Archival Record 2026-0042');
$doc->setLanguage('en');
$doc->addPage();
$doc->setFont('helvetica', '', 12);
$doc->cell(0, 10, 'This document targets PDF/A-4.', newLine: true);
// Step 4 — save. PdfAManager emits OutputIntent + ICC + XMP here.
$doc->save($out);
} catch (InvalidConfigException $e) {
fwrite(STDERR, "PDF/A-4 activation failed: {$e->getMessage()}\n");
exit(1);
}
// Step 5 — the gate. veraPDF, not the library, asserts conformance.
$exitCode = 0;
$output = [];
exec('verapdf --flavour 4 ' . escapeshellarg($out), $output, $exitCode);
if ($exitCode !== 0) {
fwrite(STDERR, "veraPDF FAILED — output is not PDF/A-4 conforming\n");
fwrite(STDERR, implode("\n", $output) . "\n");
exit(1);
}
echo "veraPDF PASS — archival.pdf is reported PDF/A-4 conforming by veraPDF\n";

veraPDF başarılı olduğunda:

veraPDF PASS — archival.pdf is reported PDF/A-4 conforming by veraPDF

Premium paketi eksik olduğunda betik, sıfırdan farklı bir kodla ve eyleme geçirilebilir bir iletiyle sonlanır; dosya yazmaz.

  • Premium kapısı. Yalnızca Core içeren bir kurulumda enablePdfA() bir InvalidConfigException fırlatır; bu özel durum security.pdfa öğesini belirtir ve çözüm olarak composer require nextpdf/pro komutunu verir. Önce kayıt defterini yoklayın.
  • Şifreleme çakışması. Bir PDF/A belgesinde setEncryption(), useAesGcm() veya setPublicKeyEncryption() çağrısının yapılması, bu çağrıların herhangi biri sırasında bir uyumsuzluk özel durumu yükseltir. PDF/A, Encrypt sonlandırıcı anahtarını yasaklar.
  • Uygunluk türü. Bir PdfAVersion değerini enablePdfA() çağrısına 4e veya 4f için geçirin. Varsayılan değer 4’tür.
  • Kapı motor değil, doğrulayıcıdır. Başarılı bir save() çağrısı, NextPDF’in PDF/A-4’ün gerektirdiği yapıtları yazdığı anlamına gelir. Bu, tek başına uygunluğu kanıtlamaz. Uygunluğu veraPDF doğrular; bu tarif onun kararını kapı hâline getirir. Doğrulayıcı başarılı olana kadar bir dosyanın PDF/A-4 uyumlu olduğunu belirtmeyin.
İfadeBelirtimMaddereference_id
Bir PDF/A-4 dosyası renk özelliklerini, gömülü bir International Color Consortium (ICC) profiline başvuran bir PDF/A OutputIntent ile belirtebilir. Aygıttan bağımsız renk bunun yerine doğrudan belirtilebilir; §6.2.4.1.ISO 19005-4§6.2.3
PDF/A-4’te şifreleme yasaktır.ISO 19005-4§6.6.4
PDF/A-4, pdfaid tanımlamasını Extensible Metadata Platform (XMP) üst verisinde taşır.ISO 19005-4§6.7.5

Uygunluğu doğrulayıcı doğrular. Kitaplık, uygun olması amaçlanan çıktıyı üretir; kararı doğrulayıcı verir.