PDF 2.0 : ce qui a changé
ISO 32000-2 Evidence: Standard-backed
PDF 2.0, c’est la norme ISO 32000-2 : la première spécification PDF entièrement détenue par l’ISO, et non plus par Adobe. Il s’agit surtout d’une consolidation et d’un nettoyage de la 1.7, plutôt que d’une réinvention spectaculaire. Cette page explique ce qui a réellement changé, quels changements tu remarqueras en pratique, et comment NextPDF cible la base 2.0 par défaut tout en restant capable d’écrire une structure de fichier plus ancienne lorsqu’un profil l’exige.
Pourquoi c’est important
Section intitulée « Pourquoi c’est important »« PDF 2.0 » donne l’impression d’un format différent. Ce n’en est pas un. Un fichier 2.0 utilise le même modèle d’objets, la même table de références croisées et le même trailer que la 1.7, ce qui peut faire sous-estimer les vrais changements. Les changements problématiques ne sont pas les fonctionnalités phares. Ce sont les resserrements : des règles qui étaient optionnelles en 1.7 et qui sont désormais attendues, et des fonctionnalités qui ont été discrètement retirées. Un document parfaitement valide en 1.7 peut être un fichier 2.0 non conforme sans la moindre différence visible.
Cela compte aussi pour la direction prise. NextPDF est un moteur PDF 2.0. Une fois que tu sais ce que la 2.0 attend, et où elle s’écarte délibérément de la 1.7, tu peux comprendre pourquoi le moteur refuse certaines choses, incorpore les polices plus strictement et choisit par défaut un flux de références croisées plutôt qu’une table.
La version courte
Section intitulée « La version courte »- PDF 2.0 = ISO 32000-2, détenue par l’ISO, et s’appuie sur la 1.7 (sans la remplacer).
- L’en-tête devient
%PDF-2.0; un générateur conforme indique la version 2.0 dans l’en-tête ou dans le catalogue/Version. - L’essentiel de la structure du fichier est inchangé : mêmes objets indirects, même trailer, mêmes règles
startxref/%%EOF. - Le flux de références croisées est la valeur par défaut naturelle en 2.0 ; la table classique de 20 octets reste légale et demeure exigée par certains profils PDF/A.
- La 2.0 ajoute des choses (par exemple, des structures plus riches pour les fichiers associés et les parties de document, un chiffrement plus robuste via l’extension AES-256-GCM) et retire des choses (certaines balises de structure ; des attentes resserrées sur l’incorporation des polices ; des collections de caractères CJC obsolètes).
- NextPDF cible la 2.0 par défaut et peut sérialiser une structure 1.7/1.4 lorsqu’un profil de conformité l’exige.
L’approche de NextPDF
Section intitulée « L’approche de NextPDF »La version est une décision, exprimée à un seul endroit : la stratégie de sérialisation.
Pdf20StreamStrategy (src/Writer/Pdf20StreamStrategy.php) écrit l’en-tête %PDF-2.0, annonce /2.0 comme version du catalogue et émet un flux de références croisées compressé. Elle applique aussi directement le resserrement des polices de la 2.0. Sous le profil 2.0, elle peut imposer l’incorporation d’une police standard Type 1 non incorporée, au lieu de se contenter d’un avertissement, parce que la norme attend désormais ces polices incorporées. Les deux stratégies basées sur une table (Pdf17TableStrategy, Pdf14TableStrategy) existent précisément parce que certains profils ont besoin de la forme plus ancienne. PDF/A-2 et -3 imposent la table de références croisées traditionnelle, et PDF/A-1 interdit en plus les flux d’objets et de références croisées. Les trois stratégies implémentent la seule interface PdfSerializationStrategy, si bien que le générateur reste identique au-dessus de ce point d’abstraction. Seule la forme du trailer/xref change.
Le chiffrement plus robuste suit la même logique délibérée. PdfXrefWriter (src/Writer/PdfXrefWriter.php) propage l’activation d’AES-256-GCM (l’extension ISO/TS 32003 à la 2.0) dans le dictionnaire de chiffrement, de sorte que la version du gestionnaire et les entrées de mode de chiffrement émises correspondent aux octets réellement produits. Le moteur n’annonce pas un chiffrement pour en écrire un autre.
La conception d’ensemble est la suivante. La 2.0 est la valeur par défaut. La structure plus ancienne est accessible volontairement, jamais par accident. Et là où la 2.0 resserre une règle, NextPDF peut appliquer la règle resserrée plutôt que de la relâcher silencieusement.
- Step 1 of 3: ISO 32000-1 PDF 1.7 — the Adobe-authored base, adopted by ISO
- Step 2 of 3: ISO 32000-2 PDF 2.0 — ISO-owned consolidation, tightening, and additions
- Step 3 of 3: ISO/TS 32003 AES-256-GCM (AESV4) — an encryption extension to PDF 2.0
Ce que disent les preuves
Section intitulée « Ce que disent les preuves »La déclaration de version est normative. Spec: ISO 32000-2, §7.5.2 ISO 32000-2 §7.5.2 précise qu’un processeur écrivant un fichier conforme doit (shall) identifier la version — soit dans l’en-tête, soit comme entrée /Version du catalogue — comme 2.0, et que l’en-tête est %PDF-1.n ou %PDF-2.n suivi d’un seul marqueur de fin de ligne.
Spec: ISO 32000-2, §7.7.2 ISO 32000-2 §7.7.2 ajoute que le
/Version du catalogue l’emporte sur une version d’en-tête antérieure, ce qui est exactement ce qui rend
possible une élévation de version incrémentale. Evidence: Standard-backed
Que la 2.0 soit une consolidation et non une réécriture se voit dans ce qu’elle conserve : le flux de références croisées (/Type /XRef) est le même mécanisme introduit dans PDF 1.5 et repris comme valeur par défaut de la 2.0 ( Spec: ISO 32000-2, §7.5.8 ISO 32000-2 §7.5.8 ). Les objets indirects, le trailer et la structure startxref sont inchangés par rapport à la description de la page précédente.
Les changements qui comptent sont des retraits et des resserrements. La norme indique que six éléments de structure standard présents dans l’espace de noms de structure standard de PDF 1.7 ne font pas partie de l’espace de noms de PDF 2.0 — Art, BlockQuote, TOC, Reference, BibEntry, et Code ( Spec: ISO 32000-2, Annex L.3 ISO 32000-2 Annex L.3 , les différences d’espace de noms étant définies selon Spec: ISO 32000-2, §14.8.6 ISO 32000-2 §14.8.6 ). Elle resserre aussi les quatorze polices standard Type 1 : là où la 1.0–1.7 autorisait leurs dictionnaires à omettre les entrées de métriques, la 2.0 met fin à cette tolérance ( Spec: ISO 32000-2, §9.6.2.1 ISO 32000-2 §9.6.2.1 ). Elle révise aussi les collections de caractères CJC prédéfinies. Par exemple, Adobe-Korea1 est obsolète en 2.0. Adobe-KR est ajoutée. Aucun de ces changements ne modifie l’apparence d’une page existante. Tous peuvent modifier sa conformité.
| Catégorie | Exemples (2.0 vs 1.7) | Modifie-t-il l’apparence ? | Pourquoi c’est important |
|---|---|---|---|
| Inchangé | Objets indirects, trailer, startxref/%%EOF, flux xref | — | 2.0 a le même modèle d’objets ; la plupart des outils restent utilisables |
| Ajouté | Structures de fichiers associés / de parties de document plus riches ; chiffrement AES-256-GCM (ISO/TS 32003) | Non | Capacité nouvelle à activer ; les lecteurs plus anciens peuvent l’ignorer sans risque |
| Resserré | Polices Standard-14 attendues incorporées ; métriques qui ne peuvent plus être omises | Non | Un fichier 1.7 valide peut être un fichier 2.0 non conforme |
| Retiré | Six éléments de structure de l’espace de noms 1.7 (Art, BlockQuote, TOC, Reference, BibEntry, Code) ; collections CJC obsolètes (par exemple, Adobe-Korea1) | Non | Silencieux : rien de visible ne signale la perte de conformité |
Les changements de PDF 2.0 qui comptent sont pour la plupart invisibles : des ajouts que tu actives, et des resserrements/retraits qui modifient la conformité sans modifier un seul pixel rendu.
Exemple concret
Section intitulée « Exemple concret »La seule différence visible entre un fichier 2.0 et un fichier 1.7 tient souvent en deux lignes — l’en-tête et la version du catalogue — même si les règles de conformité qui les sous-tendent diffèrent sensiblement.
%PDF-2.0 % was %PDF-1.7...1 0 obj<< /Type /Catalog /Version /2.0 % catalog states 2.0; overrides header if later /Pages 2 0 R >>endobj...% Cross-reference STREAM is the 2.0 default (was often a 20-byte table)99 0 obj<< /Type /XRef /Size 100 /W [1 2 2] /Filter /FlateDecode /Root 1 0 R >>stream<binary xref entries>endstreamendobjstartxref12345%%EOFUn lecteur voit %PDF-2.0 et un /Version /2.0. Ce qu’il ne voit pas — et ce qu’un vérificateur de conformité, lui, voit — c’est que ce fichier est désormais censé incorporer ses polices standard et ne doit pas utiliser les balises de structure que la 2.0 a retirées. Les octets qui changent sont peu nombreux. Les règles qui changent, elles, ne le sont pas.
Idée fausse courante
Section intitulée « Idée fausse courante »Le piège, c’est : « on produit du PDF 2.0, donc on est plus conforme qu’avant. » Écrire %PDF-2.0 est une affirmation, pas une garantie. Un fichier peut porter l’en-tête 2.0 et néanmoins enfreindre la 2.0 — en référençant une police standard non incorporée, ou en utilisant une fonctionnalité que la 2.0 a retirée — exactement comme c’était toléré en 1.7. Le marqueur de version relève la barre à laquelle le fichier est mesuré. Il ne hisse pas le fichier au-dessus d’elle. L’erreur inverse consiste à supposer qu’un fichier 1.7 fonctionne comme un fichier 2.0 en changeant l’en-tête : le plus souvent, il s’affiche à l’identique et échoue à la conformité, parce que les resserrements sont réels même s’ils sont invisibles.
Limites et frontières
Section intitulée « Limites et frontières »Cibler la base 2.0 signifie que NextPDF adopte par défaut la structure de fichier 2.0 et peut appliquer les règles resserrées de la 2.0. Cela ne signifie pas que chaque fonctionnalité 2.0 optionnelle est implémentée, ni qu’émettre un en-tête 2.0 certifie un document au regard de PDF/A, PDF/UA ou de tout autre profil. Ce sont des objectifs de conformité distincts et plus stricts, superposés à la spécification de base, chacun avec sa propre validation.
Cette page est un guide pratique des différences de version, pas un journal exhaustif des changements de la norme ISO 32000-2 par rapport à la 32000-1. Là où une fonctionnalité ou une dépréciation 2.0 précise gouverne le comportement du moteur, ce comportement est rattaché à sa propre clause. Cette page cartographie le paysage plutôt que d’énumérer chaque écart au niveau des clauses.
Mini-FAQ
Section intitulée « Mini-FAQ »PDF 2.0 est-il rétrocompatible avec les lecteurs 1.7 ? En grande partie, pour ce qui touche à la structure inchangée. Les nouvelles fonctionnalités 2.0 sont généralement conçues pour qu’un lecteur plus ancien puisse ignorer ce qu’il ne comprend pas. Mais une fonctionnalité propre à la 2.0 ne sera pas honorée par un lecteur 1.7.
Qui l’emporte, l’en-tête ou le /Version du catalogue ? Le /Version du catalogue prévaut lorsqu’il nomme une version plus récente que l’en-tête. C’est ce qui permet à une mise à jour incrémentale de relever la version d’un fichier sans réécrire l’en-tête.
Pourquoi NextPDF choisit-il par défaut un flux de références croisées plutôt qu’une table ? Le flux de références croisées est le mécanisme naturel de PDF 2.0 — compact et capable d’indexer les objets compressés. La table de 20 octets est encore écrite lorsqu’un profil (notamment certains niveaux de PDF/A) l’exige.
Documentation associée
Section intitulée « Documentation associée »- Ce qu’est réellement un PDF — le modèle d’objets et la table xref que PDF 2.0 conserve de la 1.7.
- Le paysage des normes — où se situe la norme ISO 32000-2 parmi les normes que NextPDF suit, et comment une clause devient un comportement.
- Les polices : la partie difficile — le resserrement de l’incorporation des polices est l’un des changements 2.0 que tu ressens vraiment.
Glossaire
Section intitulée « Glossaire »- PDF 2.0 — la spécification PDF normalisée sous le nom ISO 32000-2, la première édition détenue par l’ISO et non par Adobe.
- ISO 32000-1 — la normalisation ISO de PDF 1.7 d’Adobe ; la base sur laquelle s’appuie PDF 2.0.
- ISO/TS 32003 — une spécification technique étendant la PDF 2.0 avec le chiffrement AES-256-GCM (AESV4).
/Versiondu catalogue — l’entrée du catalogue de document indiquant la version PDF ; elle l’emporte sur l’en-tête lorsqu’elle nomme une version plus récente.- Flux de références croisées — le mécanisme de références croisées de PDF 1.5+ / 2.0 (
/Type /XRef) ; la valeur par défaut de NextPDF, la table classique restant disponible pour les profils plus anciens. - Resserrement — une règle qui était optionnelle ou permise en 1.7 et qui est attendue ou exigée en 2.0, modifiant la conformité sans modifier l’apparence.