de PDF à images et d'images à PDF
Le 3 July 2009 à 19:26.

Il y a deux cas de figure (en tous cas me concernant) où il est nécessaire de convertir un PDF classique (où l'on peut sélectionner du texte) en une version où chaque page est une simple image. Il y a le cas de notre douce administration française et de ses formulaire à remplir. Il est tout de même plus agréable (pour eux, vu mon écriture Wink de faire cela sous GIMP. Et il y a le cas où l'on ne veut pas que le document fournit à un tiers finisse en copier-coller un peu partout.

PDF vers images

Il existe au moins quatre moyens de convertir un PDF en autant d'images qu'il y a de pages. Nous avons déjà GIMP qui fait cela très bien mais qui ne permet pas si facilement de refabriquer le PDF final.

Ensuite nous avons l'incontournable convert (imagick) qui s'utilise très simplement :
gaston$convert -quality 100 -density 100 mon.pdf page_%d.jpg
gaston$ 

Comme vous le voyez, malgré une qualité à 100% et une densité compatible avec un écran moderne, le résultat (agrandi deux fois) n'est pas terrible.

Après nous pouvons utiliser gs qui s'utilise avec une ligne de commande un peu moins triviale
gaston$gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -dJPEGQ=100 -r100 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sOutputFile=page_%d.jpg mon.pdf
gaston$ 

Et là aussi le résultat n'est pas à la hauteur avec toujours le même problème d'adoucissement des polices alors que le paramètres dTextAlphaBits est sensé l'activer. Ceci étant dit, je pense que le moteur de rendu utilisé par convert est justement ghostview, ce qui expliquerait les mêmes mauvais résultats.

Enfin il y ma dernière découvert, la méthode utilisant pdftoppm issue du projet poppler (utilisé par evince). Là c'est encore plus simple à utiliser :
gaston$pdftoppm -r 100 mon.pdf page
gaston$ 

Comme vous pouvez le constater le résultat est bien meilleur. Les caractères sont propres et les images pas trop bouffées. Bref, la bonne solution.

Conversion d'image à pdf

Une fois que le formulaire modifié avec GIMP, ou que le document éventuellement retouché, il est temps d'opérer la transformation inverse. Là c'est beaucoup plus simple, c'est convert qui fait tout le travail :

gaston$convert *.ppm mon_nouveau.pdf
gaston$ 

Conclusion

Voilà, c'est terminé. Après le fichier finale est peut-être un peu volumineux (environ 16MO pour 40 Pages) mais il est de très bonne qualité. Et si vous désirez l'envoyer par courriel, il est toujours possible d'utiliser la classique astuce suivante :

gaston$pdf2ps mon_nouveau.pdf - | ps2pdf - mon_nouveau_et_leger.pdf
gaston$ 

Bien évidement vous perdrez en qualité, mais dans une bien moindre mesure que si vous aviez réalisé le même allégement sur des images générées par gs ou convert. Ceci étant dit, c'est la méthode de feignant, Lone Wolf, lui utilise les mêmes outils (pdf2ps & ps2pdf), sans perte de qualité, mais avec des paramètres de barbares qui donnent des résultats étonnants.

Commentaires

Lone Wolf, le 3 juillet, 2009 - 20:50

Bonjour,

Merci pour cet article. Concernant votre dernière ligne de commande,présentée dans la conclusion, il est possible d'optimiser un PDF en utilisant une méthode similaire, mais sans perte de qualité.
Bien évidement, on n'obtient pas d'aussi bon taux qu'avec un passage en 72 dpi, mais on conserve la qualité d'origine du PDF.

J'ai documenté 2 méthode, l'une qui conserve la qualité d'origine et l'autre qui compresse les PDF en passant les images en 72dpi sur mon site :

Optimiser un fichier PDF sous Linux

Merci encore pour vos articles très intéressants,

Sincèrement,
Lone Wolf

Ulhume, le 3 juillet, 2009 - 21:01

Ah pas mal, tu t'es bien fait chier dis-moi Smiling J'ai testé sur un PDF full-image de 33mo et ça me sort un pdf de 15mo sans aucune perte, beau boulot.

Je vais ajouter cela sur le générateur de pdf de Drupal je sens.

Lone Wolf, le 3 juillet, 2009 - 21:16

Bonjour,

merci Smiling J'ai développé ces 2 lignes de commandes pour la solution de Web to Print de ma société :

EasyCreadoc - une solution de Web to Print

Sans Ghostscript j'aurai été perdu Smiling Je t'en prie, tu peut t'en inspirer autant que tu veux Smiling

Sincèrement,
Lone Wolf

Ulhume, le 18 juillet, 2009 - 12:50

Je viens déjà de l'utiliser pour alléger les pdf que je fournis à mon expert comptable, il t'en remercie Wink

Poster un nouveau commentaire

Si vous avez détecté une erreur, coquille ou bêtises du même ordre, merci de plutôt passer par le formulaire de contact
Pour vous abonner au flux des commentaires sur cet article, clickez ici.
Pour répondre à quelqu'un, utilisez plutôt le lien répondre qui se trouve en haut (ou en bas) à gauche de son commentaire.
Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement. Si vous avez un compte gravatar, l'utilisez pour afficher votre avatar.
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <div> <p> <br>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Every instance of custom tags in the input text will be replaced with a specific tool shortcut.

Plus d'informations sur les options de formatage


Commentaires récents
Porte secrète