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.
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.
qpdf --versionTu 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 guideAfficher la version de Ghostscript et les périphériques de sortie
Affiche la version de Ghostscript et les périphériques de sortie disponibles.
gs -hTu 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 guideEnregistrer 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.
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 guideReconstruire 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.
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 guideVé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.
qpdf "optimiert-qpdf.pdf" --checkTu 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 guideAfficher 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.
qpdf "optimiert-qpdf.pdf" --show-npagesTu 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 guideLe 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
qpdf --versiongs -hSi 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
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
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.
/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
qpdf "optimiert-qpdf.pdf" --checkQPDF 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.
qpdf "optimiert-qpdf.pdf" --show-npagesContrôler dans un lecteur PDF
- Rouvre le fichier de sortie enregistré depuis son dossier.
- Parcours toutes les pages et compare leur format et leur orientation avec l’original.
- Examine les images, les petits caractères et les lignes fines avec un fort grossissement.
- Teste la recherche, les liens et les formulaires comme décrit dans la section précédente.
- 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.