Salta ai contenuti

Baseline PDF 2.0: clausole ISO 32000-2 implementate da NextPDF

Dichiarazione del limite. NextPDF implementa le clausole citate; la piena conformità a ISO 32000-2 non viene dichiarata come affermazione generica.

ISO 32000-2:2020 è lo standard di base per PDF 2.0. L’output predefinito di NextPDF Core (ConformanceMode::Plain) è un PDF 2.0 non vincolato: un’intestazione %PDF-2.0, un catalogo del documento, una struttura di riferimenti incrociati e un trailer conforme. Questa pagina documenta le clausole baseline implementate da NextPDF e il limite esplicito. La libreria implementa le clausole citate, ma non avanza alcuna affermazione generica di «piena conformità a ISO 32000-2». Un file conforme è un file che un reader conforme può elaborare secondo lo standard. Questa determinazione spetta a un verificatore, non a un flag impostato dalla libreria.

Terminal window
composer require nextpdf/core:^3

L’output baseline PDF 2.0 è l’impostazione predefinita di Core: non è necessaria alcuna chiamata di profilo. Il discriminatore predefinito è ConformanceMode::Plain; i profili PDF/A-4, PDF/UA-2, PDF/X e ZUGFeRD sono sottoinsiemi vincolati sovrapposti a questa baseline.

Ogni documento NextPDF è un file PDF 2.0 prima dell’applicazione di qualsiasi profilo. Il writer soddisfa gli obblighi strutturali imposti da ISO 32000-2 a un file conforme:

  • Catalogo del documento — §7.7.2: l’oggetto radice a cui fa riferimento la voce /Root del trailer, presente in ogni output.
  • Struttura dei riferimenti incrociati — §7.5.8: una tabella o un flusso di riferimenti incrociati che individua ogni oggetto.
  • Trailer — §7.5.5: il dizionario del trailer che un file conforme deve contenere, con l’identificatore /ID del file. L’identificatore /ID è univoco per ogni file e viene normalizzato in fase di confronto. Per questo motivo la maggior parte degli output multi-oggetto è reproducibility_profile: structural, non bit per bit.
  • Struttura logica — §14.7.2: quando è abilitata la modalità tagged, la baseline StructTreeRoot su cui si basa il profilo PDF/UA-2.
  • Estensione di versione — §7.12: quando viene dichiarata un’estensione dello sviluppatore, il meccanismo è quello del dizionario Extensions / prefisso dello sviluppatore.

NextPDF implementa queste clausole, ma non esegue una valutazione completa della conformità a ISO 32000-2. Questo compito spetta a un validatore esterno (ad esempio il grammar checker Arlington o veraPDF). NextPDF\Compliance include i controlli incrociati sul flusso di byte (ArlingtonValidator) che evidenziano le discrepanze strutturali. Coadiuvano la verifica, ma non costituiscono un certificato.

SimboloEffetto
ConformanceMode::PlainPredefinito: output PDF 2.0 non vincolato.
ConformanceMode::requiresPdf17(): boolFalse per le modalità PDF 2.0; il writer emette un’intestazione %PDF-2.0.
NextPDF\Compliance\Validator\ArlingtonValidatorControllo incrociato della grammatica rispetto al modello PDF Arlington (coadiuva la verifica).
<?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";

Per la baseline, l’approccio di produzione consiste nell’eseguire un validatore strutturale esterno (Arlington / veraPDF) in CI su un output rappresentativo e nel vincolare la pipeline al relativo report. La libreria emette la struttura; spetta al checker stabilire se è conforme. La libreria non avanza alcuna affermazione generica di conformità.

  • /ID è univoco per ogni file. L’output baseline che contiene un /ID nel trailer, un /CreationDate o prefissi di sottoinsieme di font non è stabile a livello di byte. Confrontare con il profilo strutturale (qpdf-normalize), non con uno sha256 grezzo.
  • Plain ≠ archiviazione. ConformanceMode::Plain non è PDF/A. Non contiene alcun OutputIntent né marcatore pdfaid. Non va considerato adatto all’archiviazione.
  • Implementa ≠ pienamente conforme. Questa pagina elenca le clausole implementate da NextPDF. Non costituisce un’affermazione secondo cui ogni clausola ISO 32000-2 sia soddisfatta per ogni documento: questo è un verdetto del verificatore documento per documento.
  • Le estensioni hanno un namespace. Un’estensione dello sviluppatore utilizza il dizionario Extensions del §7.12 con un prefisso registrato. Una chiave privata senza prefisso è una deviazione dalla baseline.

L’emissione baseline è il percorso principale del motore: per un documento tipico, il budget di tempo reale è ≤ 1500 ms e il picco è ≤ 64 MB. La matrice di backport (PHP 8.1–8.4) è supportata per il writer baseline.

L’output baseline PDF 2.0 non include cifratura né firma, a meno che non vengano aggiunte esplicitamente. La cifratura riguarda la riservatezza (trattata in una ricetta separata). I bit di autorizzazione ISO si basano sulla cooperazione del reader e non costituiscono un controllo degli accessi. La baseline non fornisce alcuna garanzia di sicurezza.

AffermazioneSpecificaClausolareference_id
Un file PDF 2.0 conforme deve contenere un trailer / una struttura di file conforme.ISO 32000-2§7.5.5
Ogni oggetto è individuabile tramite una tabella o un flusso di riferimenti incrociati.ISO 32000-2§7.5.8
Il file ha un catalogo del documento come oggetto radice.ISO 32000-2§7.7.2
La conformità è definita in termini di writer e reader conformi.ISO 32000-2§7.2
Le estensioni di versione utilizzano il dizionario Extensions / prefisso dello sviluppatore.ISO 32000-2§7.12
L’output tagged si basa sulla baseline della struttura logica ISO 32000-2.ISO 32000-2§14.7.2

Le citazioni sono puntatori clause-id + reference_id nel corpus di verifica. Non viene riprodotto alcun testo degli standard; le clausole sono riassunte con parole proprie di NextPDF.