Ga naar inhoud

ISO 19005-4 (PDF/A-4): NextPDF feature-mapping

International Organization for Standardization (ISO) 19005-4:2020 is het archiveringsprofiel van Portable Document Format (PDF) 2.0 dat bekendstaat als PDF/A-4. Deze pagina brengt dat profiel in kaart voor NextPDF zonder de ondersteuning te overdrijven: wat Core uitvoert, wat de nextpdf/pro-extensie toevoegt en wat NextPDF uitdrukkelijk niet dekt. NextPDF voert PDF/A-4-relevante structuren uit; alleen een validator kan bevestigen dat een bestand daadwerkelijk voldoet.

Terminal window
composer require nextpdf/core:^3
# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:
# composer require nextpdf/pro

ISO 19005-4:2020 bouwt voort op ISO 32000-2:2020 (PDF 2.0), terwijl PDF/A-2 en PDF/A-3 voortbouwen op ISO 32000-1:2008 (PDF 1.7). NextPDF legt dit verschil in afstamming vast in ConformanceMode::requiresPdf17(). De methode retourneert false voor elke PDF/A-4-variant en true voor PDF/A-2 en PDF/A-3.

PDF/A-4 definieert drie conformiteitsvormen. Het basisprofiel gebruikt geen pdfa:conformance-letter. PDF/A-4e (bijlage B, engineering / 3D-inhoud) stelt pdfa:conformance = E in. PDF/A-4f (bijlage A, ingebedde bestanden) stelt pdfa:conformance = F in. ISO 19005-4:2020 §6.7.3 specificeert het PDF/A-identificatieschema in de namespace van de Association for Intelligent Information Management (AIIM). Het stelt dat een bestand dat niet aan PDF/A-4e en niet aan PDF/A-4f voldoet, geen pdfa:conformance-vermelding heeft. NextPDF neemt dit gedrag exact over in ConformanceMode::pdfaConformanceLetter(): PdfA4 retourneert de lege string, PdfA4e retourneert E, PdfA4f retourneert F.

De kritieke editiegrens ligt bij het opstellen van PDF/A-4-bestanden. Het OutputIntent-woordenboek, het ingebedde International Color Consortium (ICC)-profiel, het uitbreidingsschema van het Extensible Metadata Platform (XMP), de garanties voor lettertypesubsets en het versleutelingsverbod zijn geïmplementeerd in de Enterprise PdfAManager. De Enterprise PdfAManager wordt meegeleverd in de nextpdf/pro-extensie. Bij een Core-only-installatie genereert Document::enablePdfA() een InvalidConfigException omdat de security.pdfa-mogelijkheid niet is geregistreerd. Het uitvoerbare voorbeeld (examples/32-pdfa4-icc.php) demonstreert dit door het mogelijkhedenregister te controleren en terug te vallen met een duidelijke melding in plaats van met een stacktrace.

Daarom bestaat het PDF/A-4-oppervlak in Core alleen uit de discriminator. NextPDF registreert welke PDF/A-4-variant een document declareert. NextPDF voert de markeringen pdfaid:part = 4 / pdfa:conformance uit die het schema definieert. Het produceren van een volledig PDF/A-4-bestand — en het valideren dat het voldoet — zijn afzonderlijke stappen. De eerste stap vereist nextpdf/pro. De tweede stap vereist veraPDF.

OppervlakEditieWat het biedt
ConformanceMode::PdfA4 / PdfA4e / PdfA4fcoreDe variantdiscriminator
ConformanceMode::pdfaPart()4coreISO 19005-deelnummer
ConformanceMode::pdfaConformanceLetter()'' / 'E' / 'F'core§6.7.3-conformiteitsletter
ConformanceMode::requiresPdf17()falsecoreAfstammingscontrole voor PDF 2.0
Document::enablePdfA()proOutputIntent- + ICC- + XMP-authoring; genereert InvalidConfigException in Core
<?php
declare(strict_types=1);
use NextPDF\Conformance\ConformanceMode;
// Core: introspect the declared PDF/A-4f contract.
$mode = ConformanceMode::PdfA4f;
$mode->pdfaPart(); // 4
$mode->pdfaConformanceLetter(); // 'F' (ISO 19005-4:2020 §6.7.3 / Annex A)
$mode->requiresPdf17(); // false (PDF/A-4 is PDF 2.0 lineage)
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Exception\InvalidConfigException;
use NextPDF\Support\CapabilityRegistry;
// PDF/A-4 file authoring requires the Premium extension. Probe first so a
// Core-only install gets a clear rationale, not a stack trace.
$registry = CapabilityRegistry::getInstance();
if (!$registry->get('security.pdfa')->isAvailable()) {
throw new InvalidConfigException(
configKey: 'security.pdfa',
givenValue: 'Core-only install',
expectedType: 'nextpdf/pro extension (Enterprise PdfAManager)',
);
}
$doc = Document::createStandalone();
$doc->enablePdfA(); // Emits OutputIntent + ICC + pdfaid XMP (Premium).
// … write content …
$doc->save(__DIR__ . '/out/archive-a4.pdf');
// The file now CARRIES PDF/A-4 structures. Conformance is still unproven
// until veraPDF asserts it:
//
// verapdf --flavour 4 out/archive-a4.pdf
  • Core kan geen PDF/A-4-bestand opstellen. enablePdfA() genereert in Core een fout. Core stelt alleen de discriminator en de XMP-markeringen beschikbaar.
  • Basis-PDF/A-4 voert geen pdfa:conformance uit. Volgens ISO 19005-4:2020 §6.7.3 stellen alleen PDF/A-4e en PDF/A-4f de letter in. ConformanceMode::PdfA4 retourneert opzettelijk de lege string.
  • PDF 2.0-afstamming, niet PDF 1.7. Een veelgemaakte fout is het hergebruiken van een PDF/A-3-pijplijn die %PDF-1.7 verwacht. PDF/A-4 is PDF 2.0; requiresPdf17() retourneert false voor alle PDF/A-4-gevallen.
  • ICC-validatie is Premium. De OutputIntent-ICC-validatie van ISO 19005-4:2020 §6.2.2 (acsp-magic, tagtabel, D50-witpunt) wordt afgehandeld door de Enterprise PdfAManager, niet door Core.
  • De bibliotheek certificeert het bestand niet. Het instellen van PdfA4f en het uitvoeren van de markeringen maakt de uitvoer geen geldig PDF/A-4f-bestand. Valideer met veraPDF.

Het PDF/A-4-oppervlak van Core is zuivere introspectie van waardetypen: enum match-dispatch, O(1) en zonder allocatie. Het Premium-authoringpad voegt het OutputIntent- en ICC-pakket toe tijdens het schrijven. De kosten bestaan uit de grootte van het ingebedde profiel, die binnen het writerbudget wordt afgehandeld. veraPDF-validatie verloopt buiten de band, niet tijdens het genereren.

PDF/A-4 verbiedt versleuteling. De Enterprise PdfAManager handhaaft de invariant dat versleuteling verboden is en ordent die ten opzichte van enablePdfA(), zodat een aanroeper niet per ongeluk Advanced Encryption Standard in Galois/Counter Mode (AES-GCM) met de archiveringsmodus kan combineren. De Core-guard in HasSecurity::enablePdfA() weigert de niet-ondersteunde combinatie voordat er bytes worden geschreven. Raadpleeg het dreigingsmodel van het project voor details over de archiveringspijplijn.

Deze pagina is een functie-mapping, geen conformiteitsclaim.

ISO 19005-4:2020-gebiedClausuleNextPDF-dekkingStatus
Schema voor variantidentificatie§6.7.3ConformanceMode voert pdfaid:part = 4 en de pdfa:conformance-letter uitGeclaimd (Core; unit-getest in tests/Unit/Conformance/)
Afstammingscontrole voor PDF 2.0§6.7.3 / basisrequiresPdf17() retourneert false voor alle PDF/A-4-gevallenGeverifieerd (unit-getest)
OutputIntent + ingebedde ICC§6.2.2Enterprise PdfAManager (nextpdf/pro)Alleen Premium (niet Core)
XMP-uitbreidingsschema, lettertypesubsetting, versleutelingsverbod§6 / bijlage A/BEnterprise PdfAManager (nextpdf/pro)Alleen Premium (niet Core)
Bepaling van conformiteitClausule 5Niet uitgevoerd door NextPDF — veraPDFExpliciete niet-dekking

Ondersteuning is geen conformiteit — en deze pagina houdt de twee bewust gescheiden. (a) NextPDF Core voert de structuren uit die ISO 19005-4:2020 §6.7.3 definieert voor variantidentificatie; dit is implementatie, aangetoond door tests/Unit/Conformance/ConformanceModePdfAVariantTest.php (geslaagd). (b) Dat een bestand PDF/A-4-conform is, is een afzonderlijke bewering die alleen een validator kan doen, volgens ISO 19005-4:2020 clausule 5. Clausule 5 stelt dat een controletool de werkelijke bepaling van conformiteit aan de normatieve vereisten uitvoert. NextPDF doet bewering (a). NextPDF doet bewering (b) niet. Valideer met veraPDF (verapdf --flavour 4 …, of php oracle/run.php voor de oracle-harness — die alleen wordt uitgevoerd wanneer de veraPDF-binary aanwezig is; het is een opt-in-controle).

De zinsneden „PDF/A-4 compliant”, „fully conformant” en „PDF/A-4 certified” ontbreken bewust op deze pagina. NextPDF voert PDF/A-4-relevante structuren uit; het garandeert niet dat een bestand conform is.

Citaten zijn geparafraseerd uit het NextPDF-compliancecorpus. Volledige 64-teken-reference_id-digests worden vastgelegd in de frontmatter van de pagina en in docs/public/modules/core/_normative-evidence-conf.md.