Il y a quelque temps, j’ai eu ce problème qui peut se produire dans de nombreux cas de figure. Je devais envoyer un PDF à la préfecture via un portail en ligne tout ce qu’il y a de plus classique, mais le souci, c’est que la taille maximale pour l’upload était assez limitée. Le fichier PDF que je devais envoyer comportait plusieurs centaines de pages avec de nombreuses images et c’est clairement ce qui augmente fortement sa taille.
J’ai bien testé des logiciels basiques et open source tel que PDFSam pour réduire la taille de mon fichier PDF. Malheureusement quand j’ai tenté de compresser mon fichier PDF avec PDFSam, j’ai réussi à réduire un peu son poids, mais ce n’était pas du tout suffisant. Mon fichier PDF était toujours trop volumineux et ne passait toujours pas dans le formulaire d’upload.
Je me suis dit qu’il était temps de passer aux choses sérieuses et après quelques recherches, j’ai trouvé mon bonheur. C’est là que j’ai découvert Ghostscript. Pour être honnête, je ne connaissais pas du tout ce logiciel avant de tomber dessus en cherchant des solutions sur des forums. Ghostscript, c’est un outil en ligne de commande qui permet de manipuler des fichiers PDF et PostScript. Parmi ses nombreuses fonctionnalités, il y en a une qui m’a sauvé la mise : la compression avancée de fichiers PDF. Il est aussi très utilisé pour manipuler des fichiers PDF et est utilisé par de nombreux concepteurs de site web qui traitent directement des fichiers PDF en ligne.
Alors oui, ça demande un peu plus de manipulation que de cliquer sur un gros bouton “Compresser” dans une interface graphique, mais c’est aussi beaucoup plus puissant. Avec Ghostscript, on peut vraiment ajuster finement la qualité des images, choisir le niveau de compression, et même supprimer les données superflues qui alourdissent inutilement le fichier.
Vous allez voir, ce n’est pas très compliqué à utiliser et rien de tel qu’une bonne ligne de commande pour résoudre un problème sur Linux ! Je précise que Ghostscript fonctionne bien évidemment sur plusieurs distributions Linux, mais aussi dans Windows avec WSL. C’est aussi possible directement en installant le programme de manière classique comme n’importe quel programme sous Windows, mais ce n’est pas ce que je vais utiliser dans cet article.
On va donc démarrer par l’installation de Ghostscript, dans mon cas, j’utilise la distribution la plus courante du moment, une Linux Ubuntu qui est à jour et je commence avec les classiques commandes suivantes :
sudo apt update
sudo apt upgrade
Une fois que c’est fait, pour Debian et ses dérivés comme Ubuntu, Linux Mint, Kubuntu, Cinnamon et autres, on peut récupérer le paquet Ghostscript pour l’installer à l’aide de la commande suivante :
sudo apt install ghostscript
Pour les autres distributions Linux avec leur gestionnaire de paquet différent, cela devrait ressembler à quelque chose comme ça :
# dnf (Fedora, CentOS 8+, RHEL 8+)
sudo dnf install ghostscript
# yum (CentOS 7, RHEL 7)
sudo yum install ghostscript
# pacman (Arch Linux, Manjaro)
sudo pacman -S ghostscript
# zypper (openSUSE Leap, Tumbleweed)
sudo zypper install ghostscript
# apk (Alpine Linux)
sudo apk add ghostscript
# emerge (Gentoo)
sudo emerge --ask app-text/ghostscript-gpl
# swupd (Clear Linux)
sudo swupd bundle-add ghostscript
# slackpkg (Slackware — si configuré)
sudo slackpkg install ghostscript
# nix-env (NixOS)
nix-env -iA nixpkgs.ghostscript
# eopkg (Solus)
sudo eopkg install ghostscript
Une fois que c’est installé, vous pouvez vérifier que tout s’est bien passé en tapant cette commande avec ghostscript :
gs --version
Dans mon cas, cela affiche bien un numéro de version « 10.02.1 », c’est que c’est tout bon. On va pouvoir passer aux choses sérieuses. Il est maintenant venu le temps d’essayer de compresser mon fichier PDF qui est trop lourd. À l’origine, il a donc une taille de :
57,8 Mo (60 640 325 octets)
Pour le compresser avec ghostscript, je vais alors utiliser une commande assez verbeuse. C’est pour que vous ayez le maximum de paramètre en exemple. Il sera bien évidemment possible d’en utiliser moins selon vos besoins et ce que vous souhaitez réellement faire avec votre fichier .pdf. Voici la commande que j’ai utilisé pour compresser un fichier PDF avec ghostscript :
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true -dColorImageResolution=85 -dDownsampleGrayImages=true -dGrayImageResolution=85 -dDownsampleMonoImages=true -dMonoImageResolution=85 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=fichier-cible-compressed.pdf fichier-source.pdf
Je suis d’accord. Quelques explications s’imposent. Voici ce que fait chaque option pour que vous compreniez bien ce que vous faites avec chaque paramètre de la commande gs :
-sDEVICE=pdfwrite
Spécifie le type de sortie attendu : ici, un fichier PDF. Ghostscript peut manipuler différents formats, etpdfwrite
indique qu’on veut générer un PDF.-dCompatibilityLevel=1.4
Définit la version du PDF généré. Le niveau 1.4 correspond à une compatibilité avec Acrobat 5, ce qui reste assez moderne tout en assurant un bon taux de compression.-dDownsampleColorImages=true
Active la réduction de résolution des images en couleur. Cela permet de diminuer la taille globale du fichier.-dColorImageResolution=85
Fixe la nouvelle résolution cible pour les images couleur à 85 DPI (points par pouce). C’est un bon compromis entre qualité visuelle et poids du fichier.-dDownsampleGrayImages=true
Même principe que pour les images couleur, mais ici appliqué aux images en niveaux de gris.-dGrayImageResolution=85
Détermine la résolution pour les images en niveaux de gris, également à 85 DPI.-dDownsampleMonoImages=true
Active le rééchantillonnage des images monochromes (noir et blanc pur), souvent utilisées dans les documents scannés ou les impressions.-dMonoImageResolution=85
Spécifie la résolution cible pour ces images monochromes.-dNOPAUSE
Indique à Ghostscript de ne pas attendre une intervention de l’utilisateur entre les pages. Cela permet un traitement entièrement automatique.-dQUIET
Réduit les messages affichés dans le terminal. Ghostscript s’exécute en mode « silencieux », utile dans les scripts ou les automatisations.-dBATCH
Une fois le traitement terminé, Ghostscript quitte automatiquement. Cela évite que le programme reste actif inutilement.-sOutputFile=fichier-cible-compressed.pdf
Spécifie le nom du fichier de sortie compressé.fichier-source.pdf
C’est le fichier d’entrée, celui que tu veux compresser.
En appliquant ce traitement sur mon gros fichier PDF, la taille est presque divisée par 2 et mon fichier .pdf pèse maintenant :
26,6 Mo (27 964 182 octets)
Pas mal non ? Avec cette commande Ghostscript finalement pas si compliquée, vous devriez pouvoir compresser fortement des fichiers .pdf trop lourd sans trop de difficulté, mais pour cela, il faut mettre un peu les mains dans le terminal.
Si j’ai réussi à réduire significativement la taille de mon fichier PDF, c’est principalement grâce à la compression des images qu’il contenait. En effet, ce sont souvent les images, surtout en haute résolution, qui prennent le plus de place dans un fichier PDF. En les rééchantillonnant à une résolution plus basse, ici 85 DPI, j’ai allégé le document sans pour autant dégrader visiblement la qualité. Ce niveau de résolution reste tout à fait suffisant pour une lecture à l’écran, voire une impression basique.
L’astuce, c’est de trouver le bon compromis : plus vous baissez la résolution (par exemple 72 DPI ou moins), plus le fichier sera léger, mais la qualité visuelle risque de se détériorer. À l’inverse, une résolution plus élevée (100, 150 DPI…) conservera une meilleure qualité, mais avec un gain de place moins important. L’idéal est donc de tester plusieurs réglages en fonction de l’usage final de votre PDF : lecture numérique, envoi par mail, archivage, impression, etc. Ghostscript vous donne cette souplesse, et avec un peu d’expérimentation, vous pouvez adapter précisément votre compression à vos besoins.