PDF/A-4-conformiteit: wat NextPDF voor ISO 19005-4 uitvoert
In een oogopslag
Sectie met titel “In een oogopslag”Afbakeningsverklaring. NextPDF produceert uitvoer die bedoeld is om te voldoen aan PDF/A-4. De bibliotheek stelt geen conformiteit vast; dat doet een validator, zoals veraPDF.
PDF/A-4 is ISO 19005-4:2020, het op PDF 2.0 gebaseerde archiveringsprofiel. NextPDF Core draagt de ConformanceMode-discriminator (PdfA4, PdfA4e, PdfA4f) door. De Premium-engine nextpdf/pro voert tijdens save() de OutputIntent, het ingesloten ICC-profiel en het identificatieschema pdfaid van het Extensible Metadata Platform (XMP) uit. De bibliotheek produceert de artefacten. veraPDF beslist over de conformiteit. ISO 19005-4 §6.7.3 is expliciet: de eigenschappen pdfaid:part/pdfaid:rev “bepalen op zichzelf geen conformiteit”.
Installatie
Sectie met titel “Installatie”composer require nextpdf/core:^3composer require nextpdf/pro # OutputIntent + ICC + XMP authoringCore registreert de capability security.pdfa, maar meldt die zonder nextpdf/pro als niet-beschikbaar. In dat geval gooit enablePdfA() een InvalidConfigException met een upgradepad, in plaats van een niet-conform bestand uit te voeren.
Conceptueel overzicht
Sectie met titel “Conceptueel overzicht”Document::enablePdfA(?object $version = null) koppelt invoer van het PdfAVersion-enum aan een ConformanceMode-case. Standaard wordt ConformanceMode::PdfA4 gebruikt voor niet-herkende invoer ('4e' → PdfA4e, '4f' → PdfA4f). De modus stuurt drie emissieverplichtingen aan voor een conform bestand:
- OutputIntent + ICC — §6.2.3 staat een conform bestand toe zijn kleurkenmerken te specificeren met een PDF/A-4-OutputIntent die verwijst naar een International Color Consortium (ICC)-stream van het type
DestOutputProfile. Volgens §6.2.4.1 is dit een van de twee toegestane routes naar apparaatonafhankelijke kleur (de andere is het rechtstreeks specificeren van apparaatonafhankelijke kleurruimten). De OutputIntent is de route die NextPDF gebruikt, geen onvoorwaardelijke vereiste van de standaard. pdfaid-identificatie — §6.7.3 vereist het PDF/A-identificatieschema in XMP op documentniveau (de AIIM-naamruimtepdfaid) metpdfaid:part/pdfaid:rev. PDF/A-4e en PDF/A-4f stellen ookpdfa:conformancein (E / F). §6.7.3 stelt dat een bestand dat aan geen van beide voldoet geenpdfa:conformance-waarde mag opgeven.- Lettertype-insluiting — §6.2.10 vereist dat alle voor de weergave gebruikte lettertypen worden ingesloten.
NextPDF voert deze artefacten uit. De conformiteitsbepaling van §5 voert het niet uit. Dat is de taak van veraPDF; §6.7.3 laat die bepaling aan dat proces over.
API-oppervlak
Sectie met titel “API-oppervlak”| Methode | Effect |
|---|---|
enablePdfA(?object $version = null): static | Routeert naar ConformanceMode::PdfA4/PdfA4e/PdfA4f; plant OutputIntent + ICC + XMP in bij save(). Gooit InvalidConfigException|PageLayoutException|CompressionException als nextpdf/pro ontbreekt. |
ConformanceMode::pdfaPart(): ?int | Retourneert het ISO 19005-deel voor de actieve modus (4 voor PdfA4*). |
ConformanceMode::pdfaConformanceLetter(): string | Retourneert de pdfa:conformance-letter (E / F) of leeg. |
Codevoorbeeld — Snelstart
Sectie met titel “Codevoorbeeld — Snelstart”<?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";Codevoorbeeld — Productie
Sectie met titel “Codevoorbeeld — Productie”Gebruik het oordeel van de validator als build-gate. Voer verapdf --flavour 4 uit op de uitvoer en laat de build mislukken bij een exitcode die niet nul is. Het oordeel van de validator is de gate; de emissie van de bibliotheek is de invoer daarvoor, nooit het oordeel zelf. Zie /cookbook/php/pdfa4-conformance-gate/ voor de volledige gate-pijplijn.
Randgevallen en valkuilen
Sectie met titel “Randgevallen en valkuilen”- Inschakelen vóór content. Roep
enablePdfA()aan voordat je content toevoegt. Achteraf inschakelen verwerkt reeds geschreven objecten niet opnieuw. - Geen versleuteling. PDF/A verbiedt de
Encrypt-sleutel. RoepsetEncryption()niet aan op een PDF/A-document. Versleuteling is vertrouwelijkheid, geen archiveringsintegriteit, en die twee sluiten elkaar hier uit. pdfa:conformanceis voorwaardelijk. Alleen PDF/A-4e en PDF/A-4f stellen deze in. Deze waarde uitvoeren op een gewoon PDF/A-4-bestand is zelf een conformiteitsschending (§6.7.3) — deConformanceMode-case voorkomt dat per constructie.- PDF/A-4f-bijlagen. Ingesloten bestanden in een PDF/A-4f-bestand moeten de sleutels
FenUFhebben (Desc aanbevolen) volgens §6.7.5. Dit ondersteunt het hybride ZUGFeRD/Factur-X-pad.
Prestaties
Sectie met titel “Prestaties”OutputIntent-insluiting en ICC-insluiting voegen bij save() een ICC-stream van vaste grootte (het werkruimteprofiel) en het XMP-pakket toe. Het budget is wandkloktijd ≤ 1500 ms en piekgeheugen ≤ 128 MB voor een doorsnee document.
Beveiligingsopmerkingen
Sectie met titel “Beveiligingsopmerkingen”PDF/A-4 verbiedt versleuteling. Het profiel is een archiverings- en duurzaamheidsbeperking, geen beveiligingsmaatregel. Sleutelbeheer en beleid van verifieerders vallen buiten de reikwijdte van dit profiel; zie het trust center.
Gegevenslocatie en PII-mitigaties
Sectie met titel “Gegevenslocatie en PII-mitigaties”PDF/A-4-emissie draait in-process en schrijft uitsluitend het document, het ingesloten ICC-profiel en het XMP-pakket. Geen content verlaat het proces. Persoonlijk identificeerbare informatie (PII) in de broncontent blijft de verantwoordelijkheid van de integrator. Het profiel anonimiseert niet.
Veilige telemetrie en logschoning
Sectie met titel “Veilige telemetrie en logschoning”Het voorbeeld schrijft alleen het uitvoerpad en het validatorcommando naar STDERR. Het logt geen documentbytes. Het recipe respecteert NEXTPDF_COOKBOOK_OUTPUT en zet de PDF nooit op STDOUT.
Dreigingsmodel
Sectie met titel “Dreigingsmodel”Een PDF/A-4-bestand kent geen toegangscontrole. Iedereen met het bestand kan het lezen. Het profiel ondersteunt weergaveduurzaamheid, geen vertrouwelijkheid. Behandel de OutputIntent-ICC-stream als openbaar.
Gedrag in FIPS-modus
Sectie met titel “Gedrag in FIPS-modus”PDF/A-4-emissie voert geen cryptografie uit. Een digitale handtekening op een PDF/A-4-bestand (PDF/A-4 §6.5 staat PAdES-profielen toe) is een afzonderlijke kwestie van de handtekening-recipe en neemt de FIPS-houding van die recipe over. Deze pagina doet geen ondertekeningsclaim.
Conformiteit
Sectie met titel “Conformiteit”| Claim | Specificatie | Bepaling | reference_id |
|---|---|---|---|
| Een PDF/A-4-bestand mag zijn kleurkenmerken specificeren met een PDF/A-OutputIntent die verwijst naar een DestOutputProfile-ICC-profiel. | ISO 19005-4 | §6.2.3 | |
| Apparaatonafhankelijke kleur mag rechtstreeks of indirect via de OutputIntent-DestOutputProfile worden gespecificeerd (een van twee toegestane routes). | ISO 19005-4 | §6.2.4.1 | |
| De PDF/A-versie wordt geïdentificeerd via het PDF/A-identificatieschema (pdfaid) in de XMP van het document. | ISO 19005-4 | §6.7.3 | |
| pdfaid:part / pdfaid:rev bepalen op zichzelf geen conformiteit; de bepaling wordt uitgevoerd volgens Clause 5. | ISO 19005-4 | §6.7.3 | |
| Een bestand dat noch aan PDF/A-4e noch aan PDF/A-4f voldoet, mag geen pdfa:conformance-waarde opgeven. | ISO 19005-4 | §6.7.3 | |
| PDF/A-4f-ingesloten bestanden vereisen de sleutels F en UF (Desc aanbevolen). | ISO 19005-4 | §6.7.5 | |
| Alle voor de weergave gebruikte lettertypen moeten worden ingesloten. | ISO 19005-4 | §6.2.10 | |
| Transparantie-/kleurgebruik hangt af van een gedeclareerde OutputIntent. | ISO 19005-4 | §6.2.9 |
Citaten zijn clause-id plus reference_id-verwijzingen naar het verificatiecorpus. Er wordt geen standaardtekst gereproduceerd; NextPDF vat bepalingen samen in eigen woorden.