Compresser un document PDF numérisé

Le procédé dont je faisais récemment état au sujet de la numérisation d'un document long en document PDF, s'il est plutôt satisfaisant du point de vue de sa réalisation, pose néanmoins un sacré problème quant au volume des fichiers générés. Comme je le remarquais en conclusion, les problèmes posés par cet embonpoint sont multiples : lenteur à l'ouverture comme à la navigation, impossibilité pour l'envoyer par courrier électronique, stockage problématique en cas de multiplication de fichiers de ce type. Une cure d'amaigrissement post-numérisation sera donc souvent indispensable.

Ce mode d'emploi s'appuie de façon éhontée sur cette astuce récente d'Absolacom [1], que je remercie d'ailleurs pour cette découverte. Non pas que son article soit incomplet, mais puisque l'outil Ghostscript fonctionne aussi bien sous MS Windows, Mac OSX que GNU/Linux, je trouve dommage que tous ne puissent pas en profiter. Voici donc de quoi vous débrouiller quelque soit votre système d'exploitation, avec en prime un aperçu comparatif des résultats obtenus.

Un dernier point avant d'entrer dans le vif du sujet, notez bien que ce procédé ne donne de résultats probants que si votre document PDF contient une proportion significative d'images, comme c'est le cas pour un document numérisé. Si au contraire le document à compresser est essentiellement composé de texte (par exemple créé à l'aide de la suite bureautique OpenOffice.org), vous remarquerez peut-être comme moi que l'effet est inverse.

Ghostscript via le terminal

Ghostscript est un logiciel libre, très pointu, destiné à l'édition et l'impression de document PS et PDF. C'est concrètement un interpréteur de commande, c'est à dire un outil à qui l'on donne des instructions écrites (au clavier) en vue d'une action prédéterminée, ici pour la manipulation d'un document PDF choisi. Il existe des interfaces graphiques pour faciliter l'usage de cet outil, mais qui ne nous seront pas d'une grande aide ici [2].

Une seule instruction va suffire pour effectuer le travail, qui diffère légèrement selon le système d'exploitation utilisé (voir ci-dessous le paragraphe qui vous convient). Le paramètre -dPDFSETTINGS est laissé à votre appréciation, selon que le degré de compression voulu :

  • /screen : Compression forte, qualité faible. Destine le document à une lecture basique sur écran uniquement.
  • /ebook : Compression forte, qualité moyenne. Réglage optimisé pour une lecture électronique confortable. Très bon compromis, comme on s'en aperçoit ici en conclusion.
  • /printer : Compression moyenne, qualité moyenne. Le document reste de bonne qualité en cas d'impression papier.
  • /prepress : Compression faible, qualité haute. À utiliser en cas d'impression professionnelle prévue.

Édit du 31/03/2012 : on me fait remarquer (commentaire #26, merci thierrybo) que laisser le champ -dPDFSETTINGS vide équivaut au paramètre /default, qui donne un résultat intermédiaire entre /screen et /ebook.

Également, il ne faudra pas oublier d'adapter à votre situation input.pdf et output.pdf, respectivement le nom du fichier à modifier et le nom du nouveau fichier (la version allégée).

En pratique, sous GNU/Linux

Installation. Cet outil est très probablement déjà installé sur votre système. Si ce n'est pas le cas, référez-vous aux dépôts de votre distribution qui ne manquera pas de le proposer en standard.

Préalable. Ouvrez un terminal, et placez-vous dans le répertoire adéquat (sur le bureau dans cet exemple), avec la commande suivante (remplacez éventuellement « Bureau » par « Desktop ») :

cd ~/Bureau

Compression. Recopiez dans le terminal la commande suivante, en adaptant le paramètre de compression choisi et avec les noms des fichiers d'entrée et de sortie adéquats :

gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOUTPUTFILE=output.pdf -f input.pdf

Il ne vous reste plus qu'à valider !

Édit du 6/12/2010 : Pour rendre les choses encore plus faciles, j'ai concocté une action nautilus qui devrait pouvoir vous aider (si toutefois vous utilisez GNOME sur votre plateforme GNU/Linux, et non pas KDE par exemple).

En pratique, sous Mac OSX

Installation. Vous trouverez un installateur sur cette page, normalement en dernière version. Inutile ici d'installer Foomatic, seul nous intéresse Ghostscript for Mac OS X. Notez que deux versions sont disponibles : pour Panther (10.3.x) ainsi que pour Jaguar (10.2.x).

Préalable. Ouvrez un terminal, et placez-vous dans le répertoire adéquat (sur le bureau dans cet exemple), avec la commande suivante (remplacez éventuellement « Bureau » par « Desktop ») :

cd ~/Bureau

Compression. Recopiez dans le terminal la commande suivante, en adaptant le paramètre de compression choisi et avec les noms des fichiers d'entrée et de sortie adéquats :

/usr/local/bin/gsos2 -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOUTPUTFILE=output.pdf -f input.pdf

Il ne vous reste plus qu'à valider !

En pratique, sous MS Windows

Installation. Sur cette page, choisissez la dernière version disponible et, en bas de la page qui s'affiche, vous trouverez le fichier d'installation. Installer Ghostscript, en utilisant surtout l'emplacement proposé par défaut.

Préalable. Ouvrez un terminal par le menu Démarrer > Exécuter, en tapant « cmd ». Placez-vous dans le répertoire adéquat (sur le bureau dans cet exemple), avec la commande suivante :

cd %HOMEPATH%\\Bureau

Compression. Recopiez dans le terminal la commande suivante, en adaptant le paramètre de compression choisi et avec les noms des fichiers d'entrée et de sortie adéquats :

"C:\\Program Files\\gs\\gs8.64\\bin\\gswin32c.exe" -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOUTPUTFILE=output.pdf -f input.pdf

Prenez garde à adapter - dans le premier terme de la commande - la version de Ghostscript utilisée (ici « 8.64 ») en fonction de celle installée par vos soins (par exemple « 8.71 » [3]).

Il ne vous reste plus qu'à valider !

Édit du 23/03/2012 : Une solution automatisée (sous la forme d'un script bash) est proposée dans les commentaires ci dessous : #25. Cette solution que je n'ai moi-même pas testé, nécessite a minima de savoir utiliser un script sous Windows donc n'aidera pas beaucoup les utilisateurs non-avertis, mais par contre les autres y trouveront certainement de quoi leur simplifier la vie. N'hésitez pas à nous faire part de votre avis sur ce script, et/ou à en proposer des améliorations/applications qui pourraient rendre cette opération plus user-friendly.

Conclusion

Reprenons alors notre document témoin, le premier chapitre de l'ouvrage « Les structures élémentaires de la vie religieuse » d'Émile Durkheim (1929). Pour rappel, les 29 pages scannées deux par deux (format poche), avec une résolution de 300 dpi (pour une impression confortable), ont généré un document PDF de 15 images pour un volume total de 78 Mo.

Concernant notre document témoin, nous obtenons après un passage à la moulinette Ghostscript :

  • en mode /screen : 1,1 Mo (voir un aperçu) ;
  • en mode /default : ? Mo (non testé) mais d'après un retour d'expérience (commentaire #26) se situerait en seconde position ;
  • en mode /ebook : 3,4 Mo (voir un aperçu) ;
  • en mode /printer : 16,9 Mo (voir un aperçu).

Je vous laisse juger par vous-même le rendu à l'écran, avec les documents ci-joints. Pour ma part, je considère qu'à l'impression, du point de vue de la qualité de rendu, le /screen est à proscrire ; et du point de vue du volume en Mo, le mode /printer reste ridibitoire même si la qualité d'impression est très bonne [4].

Les performances du mode /ebook sont elles plutôt étonnantes, mais les faits sont là : très petit volume (comparé au mode /printer), et très bonne qualité (comparé au mode /screen). En définitive, un excellent rapport qualité/compression, équilibre tout à fait idéal pour qui souhaite un document léger et une qualité d'impression correcte, ou tout simplement bien fichu.

Auriez-vous des retours à ce sujet ? N'hésitez pas à me faire part de vos expériences qui temporiseraient ce résultat (ou non)...


[1] Astuce qui semble elle-même trouver sa source ici.

[2] Non pas que ce soit impossible, mais j'ai pour ma part eu des problèmes de stabilité avec GSView pour ouvrir de volumineux document PDF. L'utilisation de la console est certes austère, néanmoins l'opération fonctionne à tout les coups.

[3] Chose étonnante, la version 8.71 ne donne aucun résultat chez moi. La 8.64 fonctionne beaucoup mieux pour sa part.

[4] Ce mode pourra faire l'affaire exceptionnellement cependant, quand justement la qualité de rendu papier sera la priorité absolue.

Illustration : Franklin Press, Pictorial Field Book of the Revolution, by B.J. Lossing

Vus : 1794
Publié par archi02 : 28