table de références croisées
Une table de références croisées est la carte, à la fin d’un PDF, qui dit à quel endroit du fichier commence chaque partie numérotée du document.
En détail
Les parties d’un document sont écrites les unes après les autres et numérotées au fur et à mesure, et rien dans le fichier ne dit où commence la partie quatre cent douze, sauf cette table : une ligne par partie, qui donne à combien d’octets du début du fichier elle se trouve. La toute dernière ligne d’un PDF dit où commence la table elle-même, et c’est pour cela qu’un logiciel qui ouvre un document en lit la fin avant tout le reste.
C’est ce qui permet à la page trois cents d’un document de quatre cents pages d’apparaître sans que les deux cent quatre-vingt-dix-neuf d’avant soient lues. Le logiciel de lecture cherche la page dans la carte, y saute, et l’affiche. Depuis 2003, la carte elle-même peut être empaquetée et compressée comme n’importe quoi d’autre dans le fichier, et on l’appelle alors un flux de références croisées.
Ce qu’il fait sur un vrai document
On peut ajouter quelque chose à un document sans le réécrire. Les parties neuves s’écrivent après tout ce qui est déjà là, suivies d’une petite carte qui ne nomme que ce qui a changé et renvoie à la carte d’avant. Pas un octet de l’original ne bouge, et c’est exactement ce qui permet à un sceau posé sur ces octets de tenir encore une fois qu’une page a été ajoutée.
Quand la carte est fausse — un fichier coupé en route, ou ouvert et enregistré par quelque chose qui a mal compté ses octets — chacune de ses lignes tombe à quelques caractères de l’endroit visé. Le logiciel de lecture lit alors le fichier d’un bout à l’autre, refait la carte lui-même, et n’en dit rien. C’est pour cela qu’un document abîmé s’ouvre quand même, et c’est pour cela qu’il s’ouvre lentement.
D’où il vient, et pourquoi
La table est aussi vieille que le format, publié en 1993. Deux courtes lignes d’en-tête l’ouvrent, puis chaque entrée fait exactement vingt caractères, complétée par des zéros : l’entrée d’une partie donnée — la 412, par exemple — se trouve donc toujours 412 × 20 caractères après la première entrée. Un programme calcule cet emplacement et va lire cette seule entrée, au lieu de parcourir les quatre cent douze qui la précèdent. Cela comptait parce qu’un fichier se lisait alors sur un disque dur dont le plateau tourne : chaque lecture coûtait l’attente du plateau repassant sous la tête, et aller droit à la bonne ligne est ce qui faisait s’ouvrir tout de suite un gros document.
La révision de 2003 a permis d’écrire plutôt la carte sous la forme d’un paquet compressé, en même temps que l’empaquetage des autres notes du document : les deux vont ensemble, et un fichier qui empaquette la carte empaquette aussi les notes.
Voir le résultat sur un document fini
Réduire la taille du fichier Montrer la page un sans attendre le reste