Joseph Tux

Réduire le poids d’un fichier pdf

jeudi 14 janvier 2016 par Joseph Tux

Avec LaTeX, la qualité du fichier pdf est telle que leur poids est très important, et par exemple, incompatible avec des transferts par courriel ou des présentation sur une page web.
Des solutions efficaces existent parfois

ATTENTION, le résultat attendu n’est pas assuré, il peut même être pire !

PS : on peut aussi compresser le pdf avec 7z et le décompresser : résultat puissant, et donc dégradé sur mes premiers tests

La première commande que je lance avant d’adresser ou de stocker un fichier pdf pour le réduire est la suivante :

gs -sDEVICE=pdfwrite -sPAPERSIZE=a4 -r150x150 -dNOPAUSE -dQUIET -dBATCH -dSAFER -sOutputFile=fcible.pdf fsource.pdf

Le dernier fichier (A4) créé par LaTeX a ainsi été réduit à 9% du fichier d’origine, sans perte de qualité pour une impression couleur A4.

Eh oui, gs (ghostscript) ne sert pas qu’à afficher un fichier postscript, mais aussi à le modifier, et même à modifier un pdf.

Mieux, cette commande est dans petit script bash, qui présente le ratio de réduction, en rouge si le fichier est plus gros (cela peut arriver)

J’ai nommé ce script : reduirepdf. Il est téléchargeable sur cette page, (et commenté).

à lire, à tester et à modifier à volonté.

Attention, il nécessite gs, bien sûr, bash, pdfinfo et stat, mais à vous de trouver d’autres solutions, ou de vous passer du problème...

La deuxième solution est plus compliquée, — j’en entends qui disent plus tordue —

  1. pdftoppm -png fichier.pdf > fichier.jpeg [1]
    pour en faire un (très gros) fichier image par page
  2. convert chaquefichier.jpg chaquefichier.pdf
    pour en refaire des pages pdf
  3. pdftk fichier1.pdf fichier2.pdf ... fichierx.pdf cat output fichier_reduit.pdf

Mais, si la réduction précédente laisse un fichier encore trop gros, il peut rendre service.
Attention, ici la qualité baisse sévèrement avec pdftoppm, 150dpi par défaut [2].

Pour avoir les effets attendus, il faut parfois jouer avec les quelques paramètres de pdftoppm.
(man pdftoppm)

Voici le script que j’ai nommé degrader_pdf :
il utilise le script précédent reduirepdf, ma bibliotheque bash « AFFICHETOUT »et sa complémentaire « ANNULE_DEBUG »

reduirepdf
Zip 1.5 ko


degrader_pdf
Script bash pour réduire drastiquement, avec dégradation, un gros fichier pdf.

L’exemple du jour qui m’a incité à vous livrer cette expérience, est édifiant [3]

Il s’agit d’un flyer (dépliant a4, plié en 3) réalisé avec la classe latex leaflet, un fond coloré légèrement dégradé (page très lourde), 2 dessins scannés, des logos, un graphique tikz et des cadres bclogo

Le pdf produit par latex pèse : 37 M
après reduirepdf, il pèse : 3.2M, sans aucune dégradation sur écran 23", même zoomé fortement. Gain:91%
après les dégradations iconoclastes de la solution suivante, il ne reste plus que 608k
Il reste acceptable, dans la mesure où les caractères restent lisibles, à peine flou à la loupe, (mais qui lit les flyers à la loupe ?), gain supplémentaire : 80%

Gain total:98,4% (il fait 1,6 % de sa taille initiale)

Ceci m’a permis d’adresser un courriel avec 3 fichiers pdf, pour relecture et corrections, sans saturer les boites électroniques, et surtout sans embarrasser des correspondants peu à l’aise avec l’outil informatique !

Bien entendu, pour impression, le fichier original sera utilisé, mais si l’imprimeur était trop loin, le fichier allégé par le script reduirepdf donnerait certainement un document de même qualité.

[1-png et -tiff sont également possibles

[2L’option -r (par exemple pdftoppm -r 300) modifie ce comportement.

[3peut-être trop, toutes les situations ne se valent pas


Accueil | Contact | Plan du site | | Statistiques du site | Visiteurs : 191 / 59180

Suivre la vie du site fr  Suivre la vie du site GNU, LINUX, BSD, LL  Suivre la vie du site AIDES GNU/LINUX  Suivre la vie du site LaTeX 2e   ?

Site réalisé avec SPIP 3.1.6 + AHUNTSIC

Creative Commons License