PDFMove
Comment fonctionne l'extraction de pages PDF ? Arbre d'objets et ressources partagées
Guide

Comment fonctionne l'extraction de pages PDF ? Arbre d'objets et ressources partagées

8 min de lecture

Que se passe-t-il en arrière-plan quand vous extrayez trois pages d'un PDF ? Les pages ne sont pas découpées et collées, car dans un PDF une « page » n'est pas un bloc unique. Dans cet article, nous examinons la structure interne du format pour expliquer pourquoi l'extraction est si rapide, pourquoi le fichier extrait reste parfois étonnamment volumineux, et pourquoi il arrive quelque chose aux signets et aux liens.

L'intérieur d'un PDF : objets et références

Un fichier PDF est une collection d'objets numérotés. Chaque objet a un numéro et les objets se référencent mutuellement par leur numéro. On y trouve grossièrement :

  • Le catalogue : l'objet racine du document. Il indique « l'arbre des pages est dans tel objet, le plan dans tel autre ».
  • L'arbre des pages : une structure arborescente qui conserve les pages dans l'ordre.
  • Les objets page : chacun représente un feuillet. Il ne contient pas de contenu mais des références : « mon contenu est dans tel objet, mes ressources dans tel autre, ma taille est celle-ci ».
  • Le flux de contenu (content stream) : la suite d'instructions décrivant comment dessiner la page.
  • Les objets ressources : polices, images, profils colorimétriques, groupes de transparence.

Point déterminant : l'objet page n'héberge pas le contenu, il pointe vers lui. Et plusieurs pages peuvent pointer vers la même ressource. Une police intégrée employée dans le document constitue un objet unique ; les 300 pages y font toutes référence. Si un logo institutionnel figure en haut de chaque page, le fichier ne contient qu'un seul objet image et 300 pages le regardent.

Ce partage est le mécanisme fondamental qui permet aux PDF de rester d'une taille raisonnable — et, comme nous allons le voir, c'est aussi la cause des surprises de taille après extraction.

Ce que fait l'extraction, étape par étape

Quand vous demandez « extrais les pages 10 à 12 », l'outil effectue ceci :

1. Il parcourt l'arbre des pages et trouve les objets page aux index demandés.

2. Il effectue un suivi de dépendances. Depuis chaque objet page sélectionné, il suit tout ce dont il dépend : flux de contenu, polices utilisées par ce flux, images, espaces colorimétriques, annotations, champs de formulaire. C'est comme un parcours d'accessibilité dans un graphe — on part de la racine et on marque tous les nœuds atteignables.

3. Il copie les objets atteignables dans le nouveau fichier. Lors de la copie, les numéros d'objet sont réattribués, car la numérotation repart de zéro dans le nouveau fichier. Les références sont mises à jour en conséquence.

4. Il construit un nouveau catalogue et un nouvel arbre des pages. Le nouvel arbre ne comporte que trois pages, rangées dans l'ordre.

5. Il réécrit la table de références croisées (xref). Cette table indique à quel octet du fichier commence chaque objet ; elle évite à la visionneuse de parcourir tout le fichier pour trouver un objet.

Aucune de ces étapes n'implique de traitement d'image. Aucun JPEG n'est réencodé, aucun texte n'est redessiné. L'opération est essentiellement une copie et une renumérotation — c'est pourquoi elle est à la fois très rapide et rigoureusement sans perte de qualité.

L'explication de la surprise de taille

Venons-en à la question la plus fréquente : vous avez extrait 2 pages d'un fichier de 300 pages et 40 Mo, et le résultat pèse 4 Mo. Pourquoi ?

La réponse est à la deuxième étape : le suivi de dépendances. Si la page extraite utilise la police intégrée employée dans le document, cet objet police doit être copié dans le nouveau fichier. Une famille de polices complète (normal, gras, italique, gras-italique) atteint facilement 2 à 3 Mo. Si la page comporte une photo pleine page, elle est transférée telle quelle.

| Type de ressource | Effet sur le fichier extrait | |---|---| | Police intégrée (complète) | Transférée intégralement, peut peser plusieurs Mo | | Police intégrée (sous-ensemble) | Le sous-ensemble est transféré, plus léger | | Images de la page | Transférées telles quelles, qualité inchangée | | Profil colorimétrique ICC | Transféré, quelques centaines de Ko | | Ressources inutilisées | Non transférées, abandonnées |

Certains outils vont plus loin et « re-sous-ensemblent » la police intégrée — ne conservant que les caractères présents dans les pages extraites. Cela apporte une réduction sérieuse mais c'est une opération plus lourde, que tous les outils n'effectuent pas.

Si la taille est déterminante pour vous, la solution pratique est simple : après l'extraction, faites passer le fichier par un outil de compression. La compression abandonne les ressources inutilisées, réencode les images et recompresse les flux.

Ce qu'il advient des signets et des liens

L'arbre de plan (outline) du document vit au niveau du catalogue et chacune de ses entrées pointe vers une cible : « Chapitre 3 → objet page 147 ».

Lorsque vous extrayez 3 pages, la quasi-totalité des entrées de cet arbre pointent vers des pages qui ne sont plus dans le fichier. Un signet à cible rompue ne fait rien lorsqu'on clique dessus, ou provoque une erreur dans la visionneuse. Certains outils tentent de filtrer et de transférer les entrées survivantes ; le résultat se réduit généralement à deux titres, avec une hiérarchie brisée, et crée plus de confusion que de bénéfice. C'est pourquoi beaucoup d'applications préfèrent abandonner entièrement le plan.

La même logique vaut pour les liens internes. Si la cible d'un lien du type « Voir annexe B » n'a pas été extraite, le lien est rompu. En revanche, les liens externes (actions URI vers une adresse web) continuent de fonctionner sans problème, car ils ne dépendent d'aucune page.

Les champs de formulaire sont dans une situation intermédiaire intéressante. Le champ lui-même est une annotation liée à la page, il est donc transféré. Mais le dictionnaire de formulaire (AcroForm) est au niveau du document et peut contenir une logique de calcul ou de validation entre champs. Si vous extrayez une partie d'un formulaire multipage, les champs sont visibles mais la logique peut être rompue.

Le dilemme des numéros de page

Dans le fichier extrait, le compteur de pages repart de 1 — cela découle de l'ordre dans l'arbre des pages. Mais le numéro « 47 » imprimé sur la page fait partie du flux de contenu : c'est une instruction de dessin de texte. Comme l'extraction ne touche pas au flux de contenu, ce numéro subsiste tel quel.

Il se peut donc que le bas du premier feuillet de votre nouveau fichier porte « 47 ». Ce n'est pas un défaut, c'est une conséquence naturelle du format. Si vous voulez le corriger, deux voies : imprimer une nouvelle numérotation (qui apparaîtra à côté de l'ancienne) ou recouvrir l'ancienne d'un rectangle blanc avec un outil de modification avant d'ajouter la nouvelle.

Certains PDF comportent en outre des définitions d'étiquettes de page (page labels) — une structure au niveau du document qui fait afficher à la visionneuse des étiquettes particulières comme « iv » ou « A-3 » dans son champ de page. Elles ne sont généralement pas transférées lors de l'extraction.

Pourquoi cela peut se faire dans le navigateur

Aucune des étapes ci-dessus n'implique de calcul lourd. Lire des objets, suivre des dépendances, renuméroter et écrire — ce sont des opérations de mémoire et de fichier. Un navigateur moderne le fait rapidement, même sur des fichiers de plusieurs centaines de pages.

Conséquence pratique : votre fichier ne part vers aucun serveur. Si vous extrayez les pages de signature d'un contrat confidentiel ou isolez le feuillet pertinent d'un compte rendu médical, le document ne quitte jamais votre appareil. De plus, comme il n'y a pas d'attente de téléversement ni de téléchargement, l'opération est rapide indépendamment de la taille du fichier.

La limite est la mémoire disponible pour l'onglet du navigateur. Sur de très gros fichiers (plusieurs centaines de mégaoctets, des milliers de pages haute résolution), une pression mémoire peut se faire sentir ; découper grossièrement le fichier avant d'extraire soulage alors le travail.

En résumé

L'extraction de pages consiste à effectuer un parcours d'accessibilité dans le graphe d'objets du PDF et à copier dans un nouveau fichier tout ce dont dépendent les pages sélectionnées. Comme aucun contenu n'est réencodé, la perte de qualité est nulle et l'opération est très rapide. En contrepartie, les ressources partagées (les polices intégrées en particulier) devant être transférées, la sortie peut rester disproportionnellement volumineuse ; la compression y remédie. Quant aux signets, liens internes et étiquettes de page, qui vivent au niveau du document, ils ne peuvent par nature pas survivre à cette opération — leurs cibles ne sont plus dans le fichier.

Questions fréquentes

La qualité des images baisse-t-elle lors de l'extraction de pages ?

Non, pas du tout. L'extraction ne réencode pas les images ; elle copie tels quels dans le nouveau fichier le flux de contenu de la page et les objets dont elle dépend. Une image JPEG reste ce qu'elle est, le texte reste vectoriel. C'est la différence fondamentale avec la compression — dans celle-ci, les images peuvent être réencodées et la qualité baisser.

Pourquoi les 2 pages que j'ai extraites d'un fichier de 300 pages pèsent-elles 4 Mo ?

Parce que ces deux pages peuvent dépendre de ressources partagées au niveau du document. Une famille de polices intégrée peut à elle seule peser plusieurs mégaoctets et, tant que cette police est utilisée sur la page, elle doit être transférée dans le nouveau fichier. Il en va de même pour les profils colorimétriques et les images haute résolution placées sur la page. Un outil de compression est généralement utile dans ce cas.

Le fait que les signets ne soient pas transférés est-il une lacune ou une nécessité technique ?

Un mélange des deux. Les signets sont stockés dans un arbre de plan (outline) au niveau du document et chaque entrée pointe vers une page. Dans le sous-ensemble que vous extrayez, la plupart de ces pages sont absentes, si bien que la majorité des entrées pointent vers des cibles rompues. Certains outils tentent de transférer les entrées survivantes, mais comme le résultat est généralement incomplet et déroutant, beaucoup d'applications préfèrent abandonner entièrement le plan.

Comment l'extraction peut-elle se faire dans le navigateur, un serveur n'est-il pas nécessaire ?

Il ne l'est pas, car l'opération est légère en calcul. Il s'agit simplement de lire des objets, de les écrire dans un nouveau fichier et de renuméroter les références ; il n'y a ni traitement d'image ni réencodage. Les navigateurs modernes le font aisément, même sur des fichiers de plusieurs centaines de pages, et le fichier ne quitte jamais l'appareil.

Essayez dès maintenant avec Sayfa Çıkar.

Essayer Sayfa Çıkar