Aller au contenu
Compress PDF
Français

Un moteur de compression qui s’exécute dans votre onglet.

Pas de files de workers, pas d’endpoints de téléversement, pas de discours sur le « traitement sur nos serveurs ». Voici exactement ce qui arrive à un PDF entre le dépôt et le téléchargement.

Essayer sur votre PDF

Étape 1

Lire et comprendre le fichier

Le fichier est lu avec l’API File.arrayBuffer() du navigateur. Rien n’est posté nulle part ; les octets vivent dans la mémoire de l’onglet.

PDF.js ouvre le document et compte les pages. Un échantillon de pages réparties dans le fichier est analysé pour la densité de texte. Si une page échantillonnée contient presque aucun caractère, le document est probablement un scan. S’il en contient beaucoup, il est textuel. Cette classification détermine si la recompression d’images ou la rasterisation est essayée en premier.

L’analyse détecte aussi la protection par mot de passe. Les fichiers chiffrés s’arrêtent ici avec un message clair plutôt que de produire une sortie endommagée.

Étape 2

Trois passes croissantes

Chaque passe est une reconstruction complète. Le moteur mesure le résultat avant de décider si la passe suivante, plus destructive, est nécessaire.

Passe un — nettoyage structurel

pdf-lib charge le document et le réécrit avec les flux d’objets activés. Les vignettes de page, les objets orphelins et les métadonnées d’identification sont supprimés. Les polices, images et contenus de page ne sont pas touchés, donc cette passe est pratiquement sans perte.

Sans perte

Passe deux — recompression d’images

Le moteur parcourt le dictionnaire de ressources de chaque page, y compris les images imbriquées dans les form XObjects, et trouve les flux d’images JPEG. Chacun est décodé avec createImageBitmap, dessiné sur un canvas à taille réduite et ré-encodé à une qualité plus basse.

Le nouveau flux remplace l’ancien objet sur place, donc la mise en page, le texte, les liens et l’art vectoriel ne changent pas. Les images avec masques doux, espaces colorimétriques CMJN, compression JPX ou JBIG2 sont ignorées plutôt que de risquer un rendu cassé.

Texte préservé

Passe trois — rasterisation

Quand la cible est encore hors de portée — ou quand la source est un scan — PDF.js rend chaque page sur un canvas hors écran à 36–160 DPI. Les JPEG sont assemblés dans un document frais avec pdf-lib. Cela aplatit le texte en pixels, donc cela s’exécute en dernier et le panneau de résultat le dit.

Dernier recours

Étape 3

Chercher le meilleur résultat qui rentre

Les réglages d’image sont parcourus comme une échelle triée par poids de sortie attendu : échelle au carré multipliée par la qualité JPEG. La première étape qui mesure sous votre cible gagne. Si le résultat est confortablement sous la cible, le moteur essaye une étape meilleure pour vous donner un fichier plus net, et garde celui qui rentre.

La rasterisation utilise une échelle séparée de 160 DPI à 36 DPI. Réduire la résolution est le moyen le plus rapide de rétrécir un scan, donc l’échelle fait varier ensemble résolution et qualité JPEG plutôt que d’en pousser une à l’extrême.

La règle d’honnêteté : le succès signifie outputBytes <= targetBytes, mesuré sur le fichier terminé. Si rien ne rentre, l’outil montre le plus petit résultat réel et à quel point il dépasse la cible. Il n’arrondit jamais vers le bas, n’estime pas, et ne qualifie jamais un dépassement de succès.

Étape 4

Pourquoi l’interface ne se fige jamais

Web Worker

L’analyse PDF et l’encodage JPEG s’exécutent dans un worker dédié, donc le défilement, la sélection et la saisie restent réactifs pendant le traitement d’un gros fichier.

OffscreenCanvas

Le travail sur les images se fait sur un canvas hors écran qui ne touche pas au DOM. Les navigateurs sans cette API se replient sur un chemin par morceaux sur le thread principal.

Mémoire bornée

Les pages sont traitées par lots, les bitmaps sont fermés après usage, les URL d’objets sont révoquées et les gros fichiers sont signalés avant d’épuiser la mémoire d’un téléphone.

Ce qu’il ne peut pas faire

Limites que nous préférons admettre

  • Pas d’OCR. Les pages scannées restent scannées ; l’outil ne peut pas rendre leur texte recherchable.
  • Pas de déchiffrement de mot de passe. Les PDF chiffrés sont détectés et refusés.
  • Pas de préservation de signature. Toute compression invalide les signatures cryptographiques.
  • Pas de ré-encodage JBIG2 ni JPX. Ces images sont laissées intactes pour éviter la corruption.
  • Pas de réduction de taille garantie. Un PDF texte bien optimisé peut à peine rétrécir.
  • Pas de traitement cloud. Si votre appareil manque de mémoire, un serveur n’aidera pas.

Questions sur le moteur

Réponses plus détaillées sur le comportement du compresseur.

Pourquoi le compresseur essaye-t-il plusieurs réglages plutôt qu’un seul ?

Parce que la relation entre qualité d’image et taille de fichier n’est pas linéaire, et chaque PDF est différent. Le moteur parcourt une échelle de haute qualité à compression agressive, enregistre un vrai PDF à chaque étape, le mesure et s’arrête au premier résultat qui respecte votre cible. Ce résultat est le fichier le plus beau qui respecte la limite.

Pourquoi ne pas toujours rasteriser ? Ça produit les plus petits fichiers.

La rasterisation transforme le texte en pixels. Le fichier rétrécit, mais le texte n’est plus sélectionnable, les liens cassent et les petits caractères s’estompent. Elle est proposée en dernier recours pour les scans, et le panneau de résultat indique toujours quand elle a été utilisée.

L’outil prend-il en charge les PDF protégés par mot de passe ?

Pas encore. PDF.js peut ouvrir un fichier chiffré avec un mot de passe, mais la bibliothèque qui reconstruit les documents ne peut pas ré-encrypter le résultat. Plutôt que de produire un fichier cassé, l’outil détecte le chiffrement et vous demande de supprimer le mot de passe dans un lecteur PDF d’abord.

Pourquoi un PDF purement texte a-t-il à peine rétréci ?

Le texte et les graphiques vectoriels sont déjà compacts. Si 95 % d’un fichier est du texte et des polices, il y a très peu de données redondantes à retirer. Les outils qui annoncent d’énormes économies sur de tels fichiers rasterisent généralement les pages, c’est pourquoi cet outil indique la méthode utilisée.

Et les signatures numériques ?

Toute modification invalide une signature cryptographique. Aucun outil de compression ne peut en préserver une. Conservez l’original signé et compressez une copie si vous devez envoyer une version plus petite.

Voyez-le fonctionner sur votre propre fichier.

Déposez un PDF, choisissez une cible et regardez le résultat mesuré.

Compresser un PDF