Formats2026-08-215 min de lecture

Ce qui se passe réellement quand on compresse un PDF

PDF123 Compress recompresse les flux avec qpdf et range les objets en flux d’objets : ni sous-échantillonnage des images, ni réencodage JPEG avec perte, ni mise en sous-ensemble des polices. La linéarisation ne change presque pas la taille du fichier.

PDF123 · Updated 2026-09-19

Deux PDF peuvent sembler identiques à l’écran et différer de trois ordres de grandeur : 50 Ko contre 50 Mo. L’écart ne se situe presque jamais dans les opérateurs de texte. Dans un contrat de vingt pages, ceux-ci occupent en général quelques dizaines de kilooctets ; tout le reste, ce sont des échantillons d’image, un programme de police entièrement incorporé, et la manière plus ou moins serrée dont les flux et les objets sont rangés.

Cela entraîne une conséquence qu’il vaut mieux poser d’emblée : « compresser un PDF » n’est pas une action, mais quatre. Elles réduisent des choses différentes et coûtent des prix différents, et les confondre produit des expériences contradictoires : le fichier compressé qui n’a pas maigri, ou bien amaigri mais avec des pages devenues floues.

Schéma d’un PDF réduit par recompression des flux avec qpdf et rangement en flux d’objets, la linéarisation apparaissant comme une étape distincte sans effet sur la taille

Le poids vient des images, des polices et du rangement

La plupart des « pourquoi ce PDF est-il énorme ? » partent d’un scan ou d’une photo haute résolution encore incorporé à sa taille de capture. Le calcul vaut la peine d’être fait une fois : une page Letter de 8,5 × 11 pouces numérisée à 300 DPI fait environ 2550 × 3300 pixels et, à trois octets par pixel, à peu près 25 Mo non compressés. Vingt pages de ce type atteignent souvent 60 à 80 Mo avant que quiconque touche à la compression.

La deuxième source, ce sont les polices. Un PDF peut incorporer tout un programme de police pour que n’importe quelle machine rende le texte à l’identique, et ce coût se mesure à la taille des tables de glyphes, non à la quantité de texte réellement lue. C’est pourquoi la mise en sous-ensemble des polices est un levier de taille à part entière.

La troisième, c’est le rangement lui-même. Un même contenu peut être stocké avec des réglages de compression gaspilleurs, ou ses objets disséminés dans le fichier, chacun traînant sa propre comptabilité. Rien de tout cela ne change un pixel ni un glyphe, et c’est exactement la partie que la recompression des flux peut atteindre.

« Compresser » recouvre quatre leviers distincts

Il existe quatre leviers sur la taille ; ils agissent à des couches différentes et leurs coûts ne se recouvrent presque pas. Choisir le mauvais est la raison la plus fréquente pour laquelle une compression semble ne rien faire.

Levier Ce qu’il touche Gain de taille Coût
Recompression des flux et flux d’objets La compression des flux de contenu, le stockage et le rangement des objets Dépend du laisser-aller de l’original Apparence des pages inchangée
Sous-échantillonnage des images Le nombre de pixels, c’est-à-dire la résolution Important Résolution définitivement réduite
Réencodage d’image avec perte La représentation en octets du bitmap Important Qualité d’image réduite
Mise en sous-ensemble des polices Les tables de glyphes incorporées Modéré Les glyphes non utilisés ne sont plus modifiables
Linéarisation L’ordre des objets Quasi nul Achète plutôt le temps de chargement de la première page

Les quatre premières lignes sont toutes appelées « compression » par approximation, mais seule la première laisse le contenu intact. C’est aussi celle dont le rendement est le plus facile à mal juger : un scan dont le poids vient surtout d’échantillons d’image bruts offre peu de redondance à supprimer, et les leviers qui le réduiraient vraiment sont le sous-échantillonnage et le réencodage avec perte, au prix d’une résolution et d’une qualité perdues pour de bon.

PDF123 Compress n’actionne qu’un seul des quatre leviers

Compresser un PDF (POST /api/v1/misc/compress-pdf) n’exécute que la première ligne. Il lance qpdf avec la compression des flux non compressés (--compress-streams=y), une seconde passe sur les flux déjà compressés en Flate (--recompress-flate) et le rangement des objets en flux d’objets (--object-streams=generate).

Il ne sous-échantillonne pas les images, ne réencode pas les bitmaps vers un JPEG de qualité inférieure et ne met pas les polices en sous-ensemble. Les pages devraient rester identiques, et les gains viennent de la recompression Flate et du rangement en flux d’objets.

La condition d’échec mérite la même clarté. Quand le poids d’un fichier est majoritairement fait de données d’image déjà compressées en JPEG, Flate n’a plus rien à presser, car ces octets d’image échappent aux trois commutateurs ci-dessus. C’est pourquoi un lot de scans peut ne revenir que de quelques pour cent plus léger, là où un PDF à dominante textuelle de taille comparable gagne nettement davantage.

Le chemin inverse est Décompresser un PDF, qui déplie les flux pour l’inspection (--qdf, flux d’objets désactivés) et ne change pas non plus l’apparence des pages.

Quand un autre chemin est la bonne réponse

Ce que vous voulez Le chemin à emprunter
Une apparence identique, juste retirer le gras du rangement Compresser
Un lot de scans vraiment trop lourd, avec une perte de qualité acceptable Sous-échantillonnage ou réencodage avec perte, pas ce Compress
Un fichier encore modifiable, mais le prochain caractère ne s’affichera pas D’autres réglages d’export ou le fichier source, voir la mise en sous-ensemble des polices
Le navigateur devrait afficher la première page plus tôt La linéarisation règle le premier affichage, pas la taille
Le fichier ne s’ouvre pas du tout Réparer, un problème de structure et non de taille

Un piège se cache dans cette dernière ligne : Linéariser un PDF n’est pas une implémentation distincte ici, c’est un alias de Compress. Les deux pointent vers la même opération, l’identifiant canonique est misc/compress-pdf avec linearize-pdf comme alias, le portail envoie toujours linearize=true et optimizeLevel=1 pour cet outil, le serveur ne lit ni l’un ni l’autre, et qpdf ne reçoit jamais --linearize. L’opération qui linéarise réellement un fichier est Protéger, lorsqu’elle chiffre.

Donc si vous voulez la même apparence dans un fichier plus petit, Compresser est la réponse complète. Si vous voulez une réduction d’image avec perte ou une mise en sous-ensemble des polices, ce chemin n’est pas le bon levier. Le fichier revient directement, sans compte requis. Pour voir où vivent réellement les objets, les flux et la table de références croisées, poursuivez avec Ce qu’il y a dans un PDF.

Open tool
Process in the browser — no watermark, files removed after the job.
Open tool