Compresser un PDF sous Linux : utiliser QPDF et Ghostscript de manière ciblée

Sous Linux, tu peux optimiser la structure d’un PDF dans le terminal avec une commande QPDF documentée ou le faire reconstruire par Ghostscript pdfwrite. Seule la vérification du fichier de sortie enregistré permet de savoir si le nouveau fichier est plus petit et conserve toutes les fonctionnalités dont tu as besoin.

Optimisation de la structure ou reconstruction : quel outil choisir ?

Les deux programmes fonctionnent de manière fondamentalement différente. La commande QPDF de cette page conserve le contenu de tes pages et réenregistre uniquement les objets du fichier de la manière la plus compacte possible. Pour cela, elle regroupe par exemple les objets dans des flux d’objets et recompresse les données Flate. Elle ne réduit pas la résolution des images et ne les réencode pas en JPEG. L’optimisation facultative des images de QPDF constitue une étape distincte avec perte, brièvement expliquée dans la section suivante. La documentation QPDF décrit les différentes options.

Ghostscript fonctionne autrement. Avec le périphérique de sortie pdfwrite, il lit le PDF et génère un nouveau fichier à partir des instructions de dessin de chaque page. Le texte et les graphiques vectoriels restent généralement sous leur forme d’origine : les pages ne sont donc pas simplement transformées en images. Selon les paramètres, Ghostscript peut toutefois recalculer les images. De plus, tout ce qui ne fait pas partie de l’apparence visible des pages peut changer. Le manuel Ghostscript consacré à pdfwrite l’explique.

Certains programmes proposent une troisième méthode : ils produisent une image de chaque page. Le texte natif, la recherche et les éléments interactifs sont alors généralement perdus. Aucune des deux commandes de cette page ne fonctionne ainsi.

Trois méthodes pour réduire la taille d’un PDF et leurs effets sur le document
MéthodeCe qui se passeImagesTexte et fonctionnalités
QPDF, optimisation de la structureLes objets et les données Flate sont enregistrés de manière plus compacteLeur résolution n’est pas réduite. Un réencodage JPEG facultatif peut entraîner une perte de détails.Le contenu des pages n’est pas reconstruit ; vérifie tout de même le résultat
Ghostscript pdfwrite, reconstructionLes pages sont recréées à partir de leurs instructions de dessinLeur résolution peut être réduite selon les paramètresTexte et éléments vectoriels généralement conservés. Les liens, les formulaires et les métadonnées peuvent changer.
Produire les pages sous forme d’imagesChaque page devient une imageDépendent de la résolution choisieLe texte natif, la recherche et les éléments interactifs sont généralement perdus

Aucune de ces méthodes ne garantit un fichier plus petit. En règle générale, si ton PDF se compose surtout de texte et de graphiques vectoriels, commence par QPDF. C’est également le cas si tu souhaites modifier le moins possible les images, les liens ou les formulaires. Ghostscript peut convenir lorsque de grandes photos ou des documents numérisés constituent l’essentiel du volume et que tu peux accepter une certaine perte de qualité d’image. Le guide Compresser un PDF sans perte de qualité explique concrètement ce que signifient les méthodes avec et sans perte.

Les programmes avec interface graphique suivent les mêmes méthodes. Selon ses propres indications, PDFsam distingue l’optimisation de la structure seule dans l’édition Basic d’une compression d’images distincte dans les éditions Visual et Enhanced. Les anciens guides consacrés aux scripts de gestionnaires de fichiers ou aux interfaces qui appellent Ghostscript en arrière-plan concernent parfois d’anciennes versions d’Ubuntu. Ne reprends donc pas leurs étapes d’installation sans les vérifier. Selon son éditeur, PDF24 Creator n’existe que pour Windows ; aucune édition Linux n’est proposée.

Si tu ne souhaites rien installer, tu peux utiliser le compresseur PDF dans le navigateur. Il traite le fichier sur ton appareil, sans l’envoyer. Nous ne l’avons toutefois pas testé spécifiquement dans les navigateurs sous Linux. Le guide Compresser un PDF sans envoi de fichier explique la différence entre le traitement local dans le navigateur et un véritable fonctionnement hors ligne.

Vérifier la version et écrire dans un fichier de sortie distinct

Les commandes en un coup d’œil

Sélectionne l’une des six commandes de ce guide. Tu verras la commande inchangée et découvriras à quoi correspond chaque élément.

Les commandes proviennent des manuels officiels de QPDF et de Ghostscript. Nous ne les avons pas exécutées nous-mêmes sous Ubuntu ni sous une autre distribution. Les versions installées sur ton système peuvent différer de celles décrites dans la documentation en ligne.

Cette page n’exécute aucune commande et n’affiche aucune sortie de terminal. Tu ne verras les messages de ton système que si tu exécutes toi-même une commande.

Afficher la version de QPDF

Affiche la version de QPDF installée. Vérifie-la avant d’utiliser les autres commandes.

Affiche la version de QPDF installée.
qpdf --version

Tu peux aussi sélectionner et copier la commande directement dans le bloc de code.

Les éléments de la commande
qpdfProgramme
Lance le programme en ligne de commande QPDF.
--versionAfficher la version
Affiche la version de QPDF utilisée sur ton système.

Si l’interpréteur de commandes indique que la commande est introuvable, QPDF n’est probablement pas installé. Le nom du paquet et la procédure d’installation dépendent de ta distribution.

Passage du guide

Afficher la version de Ghostscript et les périphériques de sortie

Affiche la version de Ghostscript et les périphériques de sortie disponibles.

Affiche la version de Ghostscript et les périphériques de sortie disponibles.
gs -h

Tu peux aussi sélectionner et copier la commande directement dans le bloc de code.

Les éléments de la commande
gsProgramme
Lance Ghostscript. Sous Unix, le programme s’appelle gs.
-hAide
Affiche la version, les options, les formats, les périphériques de sortie disponibles et le chemin de recherche.

Si l’interpréteur de commandes indique que la commande est introuvable, Ghostscript n’est probablement pas installé. Note ta distribution et sa version pour pouvoir retrouver les conditions d’obtention des résultats plus tard.

Passage du guide

Enregistrer la structure de manière plus compacte

Réenregistre les objets du fichier de manière aussi compacte que possible. Les images ne sont ni sous-échantillonnées ni réencodées en JPEG.

Commande QPDF issue de la documentation : enregistre la structure de manière plus compacte, sans réduire la résolution des images ni les réencoder en JPEG.
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"

Tu peux aussi sélectionner et copier la commande directement dans le bloc de code.

Les éléments de la commande
qpdfProgramme
Lance le programme en ligne de commande QPDF.
"original.pdf"Fichier d’entrée
Le PDF qui sera lu. Le résultat est enregistré dans un fichier séparé.
--object-streams=generateGénérer des flux d’objets
Regroupe les objets appropriés dans des flux d’objets et les compresse. Le fichier de sortie utilise alors au minimum la version PDF 1.5.
--compress-streams=yCompresser les flux
Compresse les flux avec Flate, sauf s’ils sont déjà compressés autrement.
--decode-level=generalizedDécompresser les données utilisant des filtres généraux
Décompresse les données utilisant des filtres généraux pris en charge, comme LZW, Flate, ASCII85 et ASCIIHex. Les données JPEG (DCT) ne sont pas décompressées.
--recompress-flateRecompresser avec Flate
Décompresse les flux Flate existants et les recompresse. L’écriture peut donc prendre plus de temps.
--compression-level=9Niveau de compression
Sélectionne pour Flate le niveau zlib le plus élevé dans la plage documentée de 1 à 9. Les niveaux plus élevés prennent plus de temps. Cette valeur n’a aucun rapport avec la qualité JPEG.
"optimiert-qpdf.pdf"Fichier de sortie
Nom du nouveau fichier. Il sert de fichier d’entrée dans les deux commandes de vérification.

Seule la comparaison du nombre d’octets permet de savoir si le nouveau fichier est plus petit. Un nom de sortie distinct n’empêche pas d’écraser un fichier existant portant ce même nom. Choisis donc un nom encore inutilisé. La commande ne garantit pas qu’une signature numérique restera valide.

Passage du guide

Reconstruire un PDF avec pdfwrite

Ghostscript lit le PDF et génère un nouveau fichier à partir des instructions de dessin de chaque page, ici avec le préréglage /ebook.

Exemple Ghostscript avec le préréglage /ebook. Les détails des images et les fonctionnalités du document peuvent changer.
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"

Tu peux aussi sélectionner et copier la commande directement dans le bloc de code.

Les éléments de la commande
gsProgramme
Lance Ghostscript.
-dSAFERContrôle d’accès
Limite l’accès aux fichiers et aux périphériques. C’est le comportement par défaut depuis la version 9.50. Cela ne constitue pas une garantie générale de sécurité.
-dBATCHQuitter ensuite
Ferme Ghostscript dès que les fichiers indiqués ont été traités, au lieu de passer en mode interactif.
-dNOPAUSESans pause
Supprime la demande de confirmation et la pause à la fin de chaque page.
-sDEVICE=pdfwritePériphérique de sortie
Sélectionne pdfwrite, qui génère un nouveau PDF. Le texte et les éléments vectoriels sont généralement conservés. Tout ce qui ne fait pas partie du contenu visible de la page peut changer.
-dPDFSETTINGS=/ebookPréréglage
Applique un ensemble de paramètres avec une résolution d’image moyenne. Le nom décrit un usage, pas un niveau de qualité ni une réduction garantie.
-sOutputFile="optimiert-gs.pdf"Fichier de sortie
Définit le nom du nouveau fichier.
"original.pdf"Fichier d’entrée
Le PDF lu par Ghostscript.

Les détails des images et les fonctionnalités du document peuvent changer, même si les pages semblent identiques. Aucune taille ni qualité précise n’est garantie. Vérifie le fichier de sortie enregistré et choisis un nom de sortie encore inutilisé.

Passage du guide

Vérifier la structure du fichier de sortie

Vérifie la syntaxe du fichier de sortie enregistré. Pour le résultat de Ghostscript, remplace le nom du fichier.

Vérifie la syntaxe du fichier de sortie enregistré. Pour le résultat de Ghostscript, remplace le nom du fichier.
qpdf "optimiert-qpdf.pdf" --check

Tu peux aussi sélectionner et copier la commande directement dans le bloc de code.

Les éléments de la commande
qpdfProgramme
Lance le programme en ligne de commande QPDF.
"optimiert-qpdf.pdf"Fichier à vérifier
Le fichier de sortie précédemment enregistré par la commande QPDF.
--checkVérifier la structure
Vérifie la structure, le chiffrement, la linéarisation et l’encodage des flux.

Le code de retour 0 indique une vérification sans erreur, 2 des erreurs, 3 des avertissements. La vérification porte uniquement sur la structure du fichier. Elle ne permet pas de savoir si son apparence est correcte, si les formulaires et les liens fonctionnent ou s’il est sans danger.

Passage du guide

Afficher le nombre de pages

Affiche le nombre de pages du fichier de sortie enregistré. Exécute à nouveau la commande avec le nom de l’original et compare les deux nombres.

Affiche le nombre de pages du fichier de sortie enregistré. Exécute à nouveau la commande avec le nom de l’original et compare.
qpdf "optimiert-qpdf.pdf" --show-npages

Tu peux aussi sélectionner et copier la commande directement dans le bloc de code.

Les éléments de la commande
qpdfProgramme
Lance le programme en ligne de commande QPDF.
"optimiert-qpdf.pdf"Fichier dont les pages sont à compter
Le fichier de sortie précédemment enregistré par la commande QPDF.
--show-npagesCompter les pages
Affiche le nombre de pages du fichier indiqué.

Un nombre de pages identique ne signifie pas que le contenu, les images et les fonctionnalités sont inchangés. Examine toi-même les pages.

Passage du guide

Le bouton copie la commande affichée dans le presse-papiers uniquement après ton clic. Il ne lit pas le presse-papiers, n’enregistre rien et n’envoie rien.

Les commandes de cette page proviennent des manuels officiels de QPDF et de Ghostscript. Nous ne les avons pas exécutées nous-mêmes sous Ubuntu ni sous une autre distribution : il ne s’agit donc pas d’un guide testé sous Ubuntu. Vérifie d’abord les versions installées sur ton système. Les paquets de ta distribution peuvent différer de la version décrite dans la documentation en ligne actuelle.

Afficher les versions installées

Affiche la version de QPDF installée.
qpdf --version
Affiche la version de Ghostscript et les périphériques de sortie disponibles.
gs -h

Si le shell indique qu’une commande est introuvable, le programme n’est probablement pas installé. Le nom du paquet et la manière de l’installer dépendent de ta distribution. Note ta distribution et les versions afin de pouvoir comprendre ultérieurement comment un résultat a été obtenu.

Règles de base pour chaque essai

  • Laisse l’original intact. Les fichiers d’entrée et de sortie doivent toujours porter des noms différents.
  • Donne à chaque fichier de sortie un nouveau nom encore inutilisé pour ne pas écraser un fichier précédent.
  • Repars toujours de l’original pour chaque nouvel essai, et non du résultat de l’exécution précédente.
  • N’utilise aucune option ni aucun script qui remplace directement le fichier d’entrée.

QPDF : optimiser la structure de stockage

Commande QPDF issue de la documentation : enregistre la structure de manière plus compacte, sans réduire la résolution des images ni les réencoder en JPEG.
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"

La commande lit original.pdf et crée un nouveau fichier nommé optimiert-qpdf.pdf. Les options regroupent les objets dans des flux d’objets, compressent les flux de données et recompressent les données Flate au niveau maximal. Aucun recalcul des images n’est effectué. Les flux d’objets nécessitent PDF 1.5. Si un destinataire exige explicitement une version PDF plus ancienne, cette commande ne convient pas telle quelle.

QPDF peut aussi optimiser les images et réencoder les données JPEG avec un niveau de qualité sélectionnable. L’option de qualité JPEG existe depuis la version 12.1. Ces deux opérations entraînent des pertes et peuvent dégrader davantage des images JPEG déjà compressées. Ne les utilise que si tu vérifies ensuite spécifiquement les images.

Ghostscript : réécrire un PDF avec un préréglage

Exemple Ghostscript avec le préréglage /ebook. Les détails des images et les fonctionnalités du document peuvent changer.
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"

-sDEVICE=pdfwrite sélectionne la sortie PDF, -sOutputFile définit le nom du nouveau fichier, et le fichier d’entrée est placé à la fin. -dBATCH et -dNOPAUSE empêchent Ghostscript d’attendre une saisie. -dSAFER figure également sous cette forme dans les exemples du guide Ghostscript sur la ligne de commande. Le préréglage /ebook n’est qu’un point de départ, pas une recommandation pour tous les fichiers.

Bien comprendre les préréglages de Ghostscript

Avec -dPDFSETTINGS, tu sélectionnes tout un ensemble de paramètres individuels en une seule fois. Le nom d’un préréglage décrit un usage prévu. Il ne correspond ni à un niveau de qualité ni à une réduction de taille déterminée.

Préréglages pour -dPDFSETTINGS selon le manuel Ghostscript actuel (version 10.09.0). Ta version installée peut différer.
PréréglageUsage prévuRéduction de la résolution des images en couleur et en niveaux de gris
/screenAffichage à l’écran, basse résolutionActivée. Valeur cible de 72 dpi, uniquement pour les images dont la résolution dépasse 1,5 fois cette valeur.
/ebookRésolution moyenneActivée. Valeur cible de 150 dpi, uniquement pour les images dont la résolution dépasse 1,5 fois cette valeur.
/printerImpressionNon activée par défaut
/prepressPrépresseNon activée par défaut. Ce n’est pas automatiquement le choix le plus fidèle à l’original.
/defaultUsage généralNon activée par défaut

/prepress offre-t-il donc la meilleure qualité ? Non. Le manuel précise explicitement que /prepress n’est pas le réglage le plus fidèle à l’original. Sans -dPDFSETTINGS, le résultat peut rester plus proche de l’original. /prepress ne garantit pas non plus le fichier le plus petit.

Les valeurs cibles de /screen et /ebook ne signifient pas que chaque image aura ensuite exactement 72 ou 150 dpi. Les images situées sous le seuil ne subissent pas de réduction de résolution et conservent la leur. Elles ne restent pas nécessairement totalement inchangées pour autant, car les autres paramètres du préréglage, notamment ceux concernant l’encodage des images ou les couleurs, peuvent tout de même les modifier. L’option -r ne remplace pas la réduction de résolution. Elle ne règle la résolution que lorsque Ghostscript doit effectuer un rendu de remplacement de certaines parties et ne réduit pas la taille des images intégrées. Selon le manuel, il vaut souvent mieux définir certains paramètres de manière ciblée que se fier à un préréglage.

N’utilise pas un même préréglage pour tous les fichiers. Un document texte, un catalogue de photos et un document numérisé réagissent différemment. Pour les documents numérisés, mieux vaut agir dès la numérisation. Le guide Réduire la taille d’un PDF numérisé explique comment faire.

Vérifier le texte, les liens, les formulaires et les signatures

Le fait qu’un PDF ait la même apparence après compression ne prouve pas que tout ce qu’il contenait a été conservé. Ghostscript reconstruit le fichier. Selon les explications de Ghostscript sur l’optimisation des PDF, une apparence identique peut masquer des instructions et des métadonnées modifiées. Après QPDF également, vérifie les fonctionnalités qui comptent pour toi :

  • Sélectionne et copie du texte, puis essaie la recherche.
  • Clique sur les liens et les signets.
  • Remplis les champs de formulaire et enregistre-les à titre d’essai si le fichier est un formulaire.
  • Vérifie les informations telles que le titre ou l’auteur si un destinataire les exploite.
  • Si une norme particulière telle que PDF/A est exigée, vérifie sa conformité avec un outil prévu à cet effet. Aucune des commandes présentées ici ne garantit ce statut.

PDF signés numériquement

Aucune des deux commandes ne peut garantir qu’une signature numérique restera valide après la réécriture. La compression n’est donc pas une solution pour réduire la taille d’un PDF signé. Conserve l’original signé sans le modifier. Si une autre personne a signé le document et que tu as besoin d’une version plus petite, procure-toi le fichier source non signé ou contacte le signataire. Conviens d’une nouvelle signature avec l’émetteur ou le destinataire. Adobe explique les restrictions des PDF signés. Une signature visible numérisée n’est pas une signature numérique.

Supprimer une protection par mot de passe ou des restrictions de modification ne fait pas partie de la réduction de taille ; tu ne trouveras donc ici aucune commande à cet effet. Demande plutôt à l’expéditeur une version adaptée. Le guide Comprendre les signatures et les formulaires explique plus en détail comment gérer ces documents.

Comparer la taille du résultat et conserver l’original

Le fait qu’une commande s’exécute sans message d’erreur ne dit encore rien sur le résultat. Compare la taille exacte de l’original et du fichier de sortie en octets, pas seulement les valeurs arrondies en MB. Utilise le calculateur de taux de compression pour calculer le pourcentage de réduction obtenu.

Vérifier la syntaxe et le nombre de pages

Vérifie la syntaxe du fichier de sortie enregistré. Pour le résultat de Ghostscript, remplace le nom du fichier.
qpdf "optimiert-qpdf.pdf" --check

QPDF renvoie le code 0 pour une vérification sans erreur, 2 pour des erreurs et 3 pour des avertissements. Cette vérification concerne uniquement la structure du fichier. Elle ne dit pas si les formulaires, les liens et les images fonctionnent et se présentent encore comme auparavant.

Affiche le nombre de pages du fichier de sortie enregistré. Exécute à nouveau la commande avec le nom de l’original et compare.
qpdf "optimiert-qpdf.pdf" --show-npages

Contrôler dans un lecteur PDF

  1. Rouvre le fichier de sortie enregistré depuis son dossier.
  2. Parcours toutes les pages et compare leur format et leur orientation avec l’original.
  3. Examine les images, les petits caractères et les lignes fines avec un fort grossissement.
  4. Teste la recherche, les liens et les formulaires comme décrit dans la section précédente.
  5. Si possible, ouvre aussi le fichier dans un deuxième lecteur.

Plus volumineux, inchangé ou vide ?

Ghostscript peut aussi augmenter la taille d’un PDF. Le fichier est reconstruit et encodé différemment, et les nouvelles instructions occupent parfois plus de place que les anciennes. QPDF peut lui aussi n’offrir que peu de gain si le fichier est déjà enregistré de manière compacte.

Un résultat plus volumineux ou à peine plus petit peut tout de même être valide. Seules les mêmes vérifications du fichier enregistré que pour toute autre sortie permettent de le déterminer, car la taille seule ne révèle ni les erreurs ni les fonctionnalités perdues. Conserve finalement le fichier le mieux adapté ; il s’agit souvent tout simplement de l’original. En revanche, un fichier de sortie vide, illisible ou endommagé est un essai raté, pas une compression particulièrement forte. N’envoie pas ce fichier, lis les messages dans le terminal et recommence à partir de l’original avec un nouveau nom de sortie.

Si le PDF reste trop volumineux pour la limite imposée par un destinataire, tu trouveras les étapes suivantes dans le guide La taille du PDF ne diminue pas. Dans tous les cas, conserve l’original jusqu’à ce que la nouvelle version ait été reçue et acceptée.

Préférences de confidentialité

Choisissez si vous autorisez la mesure d’audience et la publicité facultatives. Dans cet aperçu non publié, elles restent désactivées même si vous les autorisez. Les outils de documents fonctionnent quel que soit votre choix. Vous pouvez le modifier à tout moment depuis le pied de page.

Paramètres nécessaires

Nécessaire

Vos préférences et le thème de couleur sont enregistrés localement. Les outils de documents restent disponibles sans les services facultatifs.

Inactif

Mesure facultative de l’utilisation. Actuellement inactive : l’autoriser enregistre votre préférence sans activer de service de mesure d’audience dans cet aperçu.

Inactif

Publicité facultative. Actuellement inactive : l’autoriser enregistre votre préférence sans activer de service publicitaire dans cet aperçu.

La mesure d’audience et la publicité facultatives sont désactivées.