Ga naar inhoud

PDF 2.0-baseline: de ISO 32000-2-clausules die NextPDF implementeert

Grensverklaring. NextPDF implementeert de geciteerde clausules; volledige ISO 32000-2-conformiteit wordt niet als algemene claim beweerd.

ISO 32000-2:2020 is de PDF 2.0-basisstandaard. NextPDF Core levert standaard onbeperkte PDF 2.0-uitvoer (ConformanceMode::Plain): een %PDF-2.0-header, een documentcatalogus, een kruisverwijzingsstructuur en een conforme trailer. Deze pagina documenteert de baseline-clausules die NextPDF implementeert en de expliciete grens daarvan. De library implementeert de geciteerde clausules, maar claimt niet algemeen „volledig ISO 32000-2-conform” te zijn. Een conform bestand is een bestand dat een conforme reader volgens de standaard kan verwerken. Dat is een oordeel van een verifier, geen library-vlag.

Terminal window
composer require nextpdf/core:^3

PDF 2.0-baseline-uitvoer is de standaard van Core; je hebt geen profielaanroep nodig. ConformanceMode::Plain is de standaard-discriminator. De profielen PDF/A-4, PDF/UA-2, PDF/X en ZUGFeRD zijn beperkte subsets die boven op deze baseline liggen.

Elk NextPDF-document begint als een PDF 2.0-bestand voordat er een profiel wordt toegepast. De writer voldoet aan de structurele verplichtingen die ISO 32000-2 aan een conform bestand stelt:

  • Documentcatalogus — §7.7.2: het root-object waarnaar de /Root van de trailer verwijst, aanwezig in elke uitvoer.
  • Kruisverwijzingsstructuur — §7.5.8: een kruisverwijzingstabel of -stream die elk object kan lokaliseren.
  • Trailer — §7.5.5: het trailer-dictionary dat een conform bestand moet bevatten, inclusief de bestands-/ID-identifier. De /ID is uniek per bestand en wordt voor vergelijkingen weggenormaliseerd. Daarom gebruikt de meeste uitvoer met meerdere objecten reproducibility_profile: structural, niet bitsgewijs.
  • Logische structuur — §14.7.2: wanneer de getagde modus is ingeschakeld, de StructTreeRoot-baseline waarop het PDF/UA-2-profiel steunt.
  • Versie-uitbreiding — §7.12: wanneer een developer-extensie wordt gedeclareerd, het mechanisme met het Extensions-dictionary / developer-prefix.

NextPDF implementeert deze clausules, maar voert geen volledige ISO 32000-2-conformiteitsbeoordeling uit. Gebruik voor dat oordeel een externe validator, zoals de Arlington grammar checker of veraPDF. NextPDF\Compliance levert de byte-stream-kruiscontroles (ArlingtonValidator) die structurele afwijkingen aan het licht brengen. Ze ondersteunen verificatie, maar zijn geen certificaat.

SymboolEffect
ConformanceMode::PlainStandaard — onbeperkte PDF 2.0-uitvoer.
ConformanceMode::requiresPdf17(): boolFalse voor PDF 2.0-modi; de writer levert een %PDF-2.0-header.
NextPDF\Compliance\Validator\ArlingtonValidatorGrammaticakruiscontrole tegen het Arlington PDF-model (ondersteunt verificatie).
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/baseline.pdf';
$doc = Document::createStandalone(); // ConformanceMode::Plain — PDF 2.0
$doc->setTitle('PDF 2.0 baseline');
$doc->writeHtml('<h1>Hello PDF 2.0</h1><p>Unconstrained baseline output.</p>');
$doc->save($out);
echo "Wrote {$out} (%PDF-2.0). Validate structure with an external checker.\n";

Voer in productie een externe structurele validator (Arlington / veraPDF) uit in continuous integration (CI) op representatieve uitvoer en gebruik het rapport ervan als gate. De library levert de structuur; de checker bepaalt of die conform is. De library doet geen algemene conformiteitsclaim.

  • /ID is bestandsuniek. Baseline-uitvoer met een trailer-/ID, /CreationDate of lettertype-subset-prefixen is niet byte-stabiel. Vergelijk met het structurele profiel (qpdf-normalize), niet met een ruwe sha256.
  • Plain ≠ archivering. ConformanceMode::Plain is geen PDF/A. Deze modus bevat geen OutputIntent of pdfaid-markering. Behandel hem niet als archiveringsformaat.
  • Implementeert ≠ volledig conform. Deze pagina somt de clausules op die NextPDF implementeert. Ze stelt niet dat elk document elke ISO 32000-2-clausule naleeft. Dat oordeel ligt per document bij een verifier.
  • Extensies hebben een namespace. Een developer-extensie gebruikt het §7.12 Extensions-dictionary met een geregistreerde prefix. Een private sleutel zonder prefix is een afwijking van de baseline.

Baseline-uitvoer is het kernpad van de engine. Het budget is wall ≤ 1500 ms en peak ≤ 64 MB voor een typisch document. De baseline-writer ondersteunt de backport-matrix (PHP 8.1–8.4).

PDF 2.0-baseline-uitvoer bevat geen versleuteling of handtekening, tenzij je die expliciet toevoegt. Versleuteling biedt vertrouwelijkheid en wordt in een aparte recipe behandeld. ISO-permissiebits berusten op medewerking van de reader, niet op toegangscontrole. De baseline geeft geen beveiligingsgarantie.

ClaimSpecClausulereference_id
Een conform PDF 2.0-bestand moet een conforme trailer / bestandsstructuur bevatten.ISO 32000-2§7.5.5
Elk object is lokaliseerbaar via een kruisverwijzingstabel of -stream.ISO 32000-2§7.5.8
Het bestand heeft een documentcatalogus als root-object.ISO 32000-2§7.7.2
Conformiteit wordt geformuleerd in termen van conforme writers en readers.ISO 32000-2§7.2
Versie-uitbreidingen gebruiken het Extensions-dictionary / developer-prefix.ISO 32000-2§7.12
Getagde uitvoer bouwt voort op de ISO 32000-2-baseline voor logische structuur.ISO 32000-2§14.7.2

Citaten zijn verwijzingen met clausule-id + reference_id naar het verificatiecorpus. Er wordt geen standaardtekst gereproduceerd; NextPDF vat clausules in eigen woorden samen.