Personal tools
You are here: Home GNU / Linux Optimiser un fichier PDF sous Linux
Un poste de développeur PHP est à pourvoir dans mon entreprise ! Si vous êtes intéressé, plus de détails sont disponibles sur la page consacrée à l'offre d'emploi de développeur PHP.
Document Actions
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Optimiser un fichier PDF sous Linux

by Pierre-Yves Landuré last modified 2009-12-17 18:00

Si vous êtes un développeur qui utilise des bibliothèques du type de TCPDF ou FPDF pour créer des fichiers PDF, vous avez pu constater que les PDF créés ne sont pas optimisés pour l'impression, ou même pour le téléchargement. Une simple ligne de commande permet de corriger ce problème.

Pré-requis

Les lignes de commandes qui vont suivre nécessitent l'installation de certains paquets:

/usr/bin/sudo /usr/bin/apt-get install xpdf-utils gs-gpl

Optimisation du PDF sans perte de qualité

En premier lieu, renseignez le nom du fichier que vous souhaitez optimiser:

PDF_FILE=original.pdf

Et le nom du nouveau fichier optimisé:

OPTIMIZED_PDF_FILE=optimized.pdf

Une fois ceci fait, pour optimiser un fichier PDF, utilisez la ligne de commande suivante:

pdftops \
-paper match \
-nocrop \
-noshrink \
-nocenter \
-level3 \
-q \
"$PDF_FILE" - \
| ps2pdf14 \
-dEmbedAllFonts=true \
-dUseFlateCompression=true \
-dProcessColorModel=/DeviceCMYK \
-dConvertCMYKImagesToRGB=false \
-dOptimize=true \
-dPDFSETTINGS=/prepress \
- "$OPTIMIZED_PDF_FILE"

Remarque: Cette ligne de commande est assez complexe. L'option de pdftops "-level3" est capitale, car elle améliore de manière radicale les performances de ps2pdf. De plus, le PDF généré est destiné à l'impression et utilise des couleurs CMJN.

Pour aller plus loin, consultez la documentation de ps2pdf : PostScript-to-PDF converter.

Compresser un PDF en réduisant la taille des images

En premier lieu, renseignez le nom du fichier que vous souhaitez optimiser:

PDF_FILE=original.pdf

Et le nom du nouveau fichier optimisé:

SHRINKED_PDF_FILE=shrinked.pdf

Une fois ceci fait, pour transformer votre fichier PDF haute définition en fichier PDF basse définition non utilisable pour l'impression, utilisez la ligne de commande suivante:

pdftops \
-paper match \
-nocrop \
-noshrink \
-nocenter \
-level3 \
-q \
"$PDF_FILE" - \
| ps2pdf14 \
-dEmbedAllFonts=true \
-dUseFlateCompression=true \
-dOptimize=true \
-dProcessColorModel=/DeviceRGB \
-dUseCIEColor=true \
-r72 \
-dDownsampleGrayImages=true \
-dGrayImageResolution=72 \
-dAutoFilterGrayImages=false \
-dGrayImageDownsampleType=/Bicubic \
-dDownsampleMonoImages=true \
-dMonoImageResolution=72 \
-dMonoImageDownsampleType=/Bicubic \
-dDownsampleColorImages=true \
-dColorImageResolution=72 \
-dAutoFilterColorImages=false \
-dColorImageDownsampleType=/Bicubic \
-dPDFSETTINGS=/prepress \
- "$SHRINKED_PDF_FILE"

Remarque: Les PDF générés par cette ligne de commande ont une résolution de 72 dpi. Ils ne possèdent pas une qualité suffisante pour une impression, mais son normallement adaptés à la lecture sur écran.

Remerciements

réduire un pdf

Posted by alexandre at 2009-06-14 19:17
bonjour,

j'ai encore beaucoup de mal à comprendre le système de ligne de commande sous linux. et je n'obtiens rien en faisant ce que tu dis. enfin c'est surtout renseigner le nom du fichier qui ne me donne rien! pourrais-tu me "dicter" la ligne de commande s'il te plait? j'ai un projet à rendre bientôt, et il faut que je travaille sur un pdf trop lourd.

merci.

Okidoki

Posted by lwolf at 2009-06-14 19:23
Place ton fichier dans ton "Dossier personnel", (pas sur le bureau hein), dans ton "Dossier personnel", et renomme le "original.pdf".

Ensuite, ouvre un terminal, et tape :

cd

pour te placer dans ton "Dossier personnel".

Ensuite, lance les commandes indiquées, et normallement, le pdf compressé se trouvera dans ton dossier personnel avec le nom "optimized.pdf"

réduire un pdf

Posted by alexandre at 2009-06-14 23:45
merci de me répondre si vite. ça a marché. sauf que l'optimisé fait la même taille que l'original : 3.3Mo ! et mon ordi rame un peu pour le traiter. tampis, je vais utiliser un autre ordi plus puissant.
merci.

Pas glop !

Posted by Emmanuel at 2009-07-09 18:15
Pas top pour mon premier essai sur un fichier d'un dizaine de pages A4 sans images.
On passe de 114k à 160k pour le shrinked !

-rw-rw---- 1 bem bem 114K 2009-07-09 13:42 original.pdf
-rw-r--r-- 1 bem bem 148K 2009-07-09 17:05 optimized.pdf
-rw-r--r-- 1 bem bem 160K 2009-07-09 17:10 shrinked.pdf

des fois cela ne fonctionne pas.

Posted by Lone Wolf at 2009-07-09 19:02
Si vous n'avez pas d'images, le shrinked n'est d'aucune utilitée. Le optimized suffit.

Il arrive, pour une raison inconnue que pour certains PDF la réduction ne s'opère pas pour une raison ou pour une autre. L'une des raison que j'ai pu observer, c'est un problème dans la descriptions des polices incluses qui cause une vectorisation de tous les textes.

pdffonts peut aider à débogguer le probème.

Mais bon.. 114k, est-ce vraiment utile de réduire encore :) Cette commande est vraiment utile pour les PDF de plusieurs mégas.

Bonne continuation

Mauvais pour moi

Posted by nicofrand at 2010-03-09 14:53
Je cherchais à passer d'un PDF de 279Ko à moins de 200Ko.
La première solution m'output un PDf de 1.3Mo et la seconde le rendu est super dégueulasse, à la limite du lisible :(


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: