Un gros document dont la première page s’affiche tout de suite

Vous envoyez à un client un catalogue de 400 pages. Il clique sur le lien, et rien ne se passe pendant plusieurs secondes. Il n’attend pas la page 400 — il voulait juste regarder la première. Un document peut être écrit de façon que la première page apparaisse presque tout de suite et que le reste continue d’arriver derrière : le même document, écrit dans un autre ordre.

Le nom de cette technique

Ça s’appelle linéariser un PDF, et un fichier écrit comme ça est un PDF linéarisé — ou linearized, à l’américaine, qui est la forme sous laquelle vous le rencontrerez le plus souvent dans un cahier des charges. Certains logiciels de lecture appellent la même chose Affichage Web rapide, et l’indiquent par un oui ou un non dans les propriétés du document.

Notre moteur écrit du PDF linéarisé. Il y a une option à activer, et rien d’autre ne change dans le document.

Ce qu’est un PDF linéarisé, dans le glossaire

Détail — 20 815 octets au lieu de 1 201 870

Un roman entier, écrit deux fois : une fois de façon ordinaire, une fois de façon à afficher la première page d’abord. Rien d’autre ne diffère entre les deux fichiers.

  • 1 201 870 octets — doivent être arrivés avant que la première page puisse être affichée, sur le fichier écrit à l’ordinaire — c’est-à-dire le fichier entier.
  • 20 815 octets — sur le fichier écrit première page en tête.
  • 1 181 055 octets — qui ne sont plus attendus.

Le logiciel de lecture affiche la première page dès que le début du fichier est arrivé, au lieu d’attendre le fichier entier.

Les chiffres sont lus sur les deux fichiers eux-mêmes, ils ne sont pas saisis à la main. Le fichier que vous pouvez télécharger est ce livre écrit première page en tête — 357 pages, la dernière donnant ces trois chiffres — et ce qui est mesuré est le livre sans cette dernière page.

Voir les deux fichiers et le programme qui les a écrits

Quand cela ne change rien

À savoir avant de l’activer. Le gain ne se sent que lorsque le document est lu pendant qu’il arrive, et cela demande deux conditions.

  1. Le serveur qui remet le fichier doit savoir en envoyer une tranche sur demande. La plupart le font d’emblée, sans réglage. Un serveur qui n’envoie jamais que des fichiers entiers remet le fichier entier, et le logiciel de lecture l’attend en entier comme avant.
  2. Le logiciel de lecture doit s’en servir. Ceux qu’intègrent Chrome, Firefox et Edge s’en servent, Adobe Acrobat Reader aussi. D’autres lisent le fichier de la façon ordinaire — et n’y perdent rien du tout, puisque c’est le même document.

Et il y a deux documents pour lesquels cela ne peut pas être demandé du tout, ce que le moteur dit franchement plutôt que d’écrire un fichier qui ne s’ouvrirait pas : un document protégé par un mot de passe, et un document dont les objets sont empaquetés ensemble pour gagner de la place. Les deux sont expliqués sous « Techniquement », plus bas.

Et cela ne fait rien du tout dans les cas où personne n’attend : un fichier joint à un courriel, un fichier copié dans un dossier partagé, un fichier téléchargé en entier puis ouvert. Dans tous ces cas-là, le document est déjà arrivé avant que quiconque le regarde.

Donc : si vos documents s’ouvrent depuis un lien, activez-le. S’ils partent en pièce jointe, cela ne change rien. Dans les deux cas, cela n’ajoute rien au prix : c’est une option du moteur, pas quelque chose qui se vend à côté.

Techniquement

Linéarisation au sens de l’ISO 32000, article 7.5.8 : une section de références croisées de première page et le dictionnaire de paramètres de linéarisation en tête du fichier, la page un et ses ressources juste après, puis les objets restants, puis la section principale de références croisées. Les tables d’indices — le flux d’indices des objets partagés et le flux d’indices des positions de page — permettent au logiciel de lecture de calculer la plage d’octets de n’importe quelle page et de la demander en une seule requête par plage.

Le chiffre ci-dessus est l’entrée /E du dictionnaire de paramètres, qui déclare la position de la fin de la première page : tout ce qui la précède est ce que le logiciel de lecture doit tenir avant de montrer une page. Un fichier écrit de la façon ordinaire ne déclare rien de tel, donc la réponse pour lui est sa propre longueur. C’est pourquoi les deux nombres sont comparables — une seule mesure, appliquée à deux écritures d’un même document.

Ce qu’il faut vérifier chez vous : le serveur doit répondre un en-tête Accept-Ranges valant bytes et honorer les requêtes par plage avec un 206, sur la route exacte qui sert les documents — un serveur frontal placé devant, une couche de compression appliquée à la volée, ou un réseau de distribution réglé pour transformer le corps changeront chacun, silencieusement, les requêtes par plage en transferts de fichier entier. Les réponses encodées sont le coupable habituel : un PDF servi avec un Content-Encoding gzip ne peut pas être demandé par plage de façon utile, et un PDF est déjà compressé à l’intérieur, donc le servir non compressé est de toute façon le bon choix.

Elle se combine avec le balisage, la conformité PDF/A et PDF/UA, et la signature. Elle s’écrit en dernier, par-dessus le document fini, si bien qu’elle ne change jamais ce que disent les pages.

Deux choses ne peuvent pas lui être demandées en même temps, et le moteur le dit plutôt que d’écrire quelque chose qui ne s’ouvrirait pas : un document rangé en flux d’objets, parce qu’un objet à l’intérieur d’un flux n’est nulle part à lui seul alors que la tête du fichier doit dire où se trouve chacun ; et un document verrouillé, parce que ce qui verrouille un objet se calcule à partir du numéro qu’il reçoit, et qu’écrire la première page en premier est justement ce qui change ces numéros.

Où regarder ensuite

Le livre qui a été mesuré, et son programme Ce qu’est un PDF linéarisé, dans le glossaire Changer de bibliothèque pour créer vos documents Le moteur dans votre propre programme

Voir les prix Voir les exemples