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
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.
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.

gaston$convert -quality 100 -density 100 mon.pdf page_%d.jpggaston$
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.

gaston$gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -dJPEGQ=100 -r100 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sOutputFile=page_%d.jpg mon.pdfgaston$
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.

gaston$pdftoppm -r 100 mon.pdf pagegaston$
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.
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.pdfgaston$
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.pdfgaston$
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.
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
Ah pas mal, tu t'es bien fait chier dis-moi
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.
Bonjour,
merci
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
Je t'en prie, tu peut t'en inspirer autant que tu veux 
Sincèrement,
Lone Wolf
Je viens déjà de l'utiliser pour alléger les pdf que je fournis à mon expert comptable, il t'en remercie
Poster un nouveau commentaire