Donc convert
d'ImageMagick produira un PDF pixellisé et de nombreuses personnes seraient intéressées à conserver les graphiques vectoriels et le texte intacts afin que seules les images intégrées soient compressées. Une bonne alternative à la compression consiste donc à utiliser gs
du paquet ghostscript
exemple d'utilisation :
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf
dans le paramètre de commande ci-dessus :-dPDFSETTINGS=/ebook
est important. Il peut avoir 3 valeurs :
-dPDFSETTINGS=/screen (screen-view-only quality, 72 dpi images)
-dPDFSETTINGS=/ebook (low quality, 150 dpi images)
-dPDFSETTINGS=/printer (high quality, 300 dpi images)
-dPDFSETTINGS=/prepress (high quality, color preserving, 300 dpi imgs)
-dPDFSETTINGS=/default (almost identical to /screen)
Je suggère ici un outil de ligne de commande, qui peut être facilement regroupé avec des boucles dans des langages de script intégrés à Windows, Linux, OS X, etc.
ImageMagick prend en charge les PDF et a un resize
option avec son outil de conversion. Je ne l'ai jamais utilisé personnellement, mais vous pouvez essayer de jouer avec ça.
Vous pouvez également utiliser le compress
option (il y a un exemple ici):
Faire pivoter un PDF
$ convert -rotate 270 -density 300x300 -compress lzw in.pdf out.pdf
Cela suppose un PDF soutenu par TIFF. Le paramètre de densité est important car sinon ImageMagick sous-échantillonne l'image (pour une raison quelconque). L'ajout de l'option de compression permet de réduire la taille globale du PDF, sans perte de qualité.
Pour les PDF multipages, vous pouvez utiliser pdftk
, puis utilisez mogrify
d'ImageMagick pour convertir chaque page en place :
$ pdftk in.pdf burst $ mogrify -rotate 270 -density 300x300 -compress lzw pg_*.pdf $ pdftk pg*.pdf cat output out.pdf $ rm pg*.pdf
Pour convertir des fichiers PDF avec ImageMagick, vous devez avoir installé GhostScript.
ImageMagick peut convertir des PDF multipages. Alors que mogrify
se convertira sur place, je vous recommande d'utiliser convert
afin de pouvoir conserver les originaux en cas d'accident.
J'ai fait quelques tests sur votre exemple de PDF fourni. Cela a très bien fonctionné pour moi :
convert -density 200 -compress jpeg -quality 20 test.pdf test2.pdf
La densité par défaut est 72
PPP. En le fixant plus haut, nous pouvons obtenir une résolution plus élevée et donc une qualité acceptable. Il avait l'air bien à 150
, et était un peu plus petit, mais si vous voulez prendre en charge une gamme de PDF 200
devrait fonctionner.
La compression JPEG doit choisir automatiquement un niveau ou par défaut sur 92
sur une échelle de 1
à 100
avec 100
étant le meilleur. Le mettre à 20
, il est presque aussi beau que l'original (un peu plus flou et le petit texte en bas est un peu difficile à lire, mais c'était quand même à l'origine).
Ces options apportent votre 1,7 Mo échantillon jusqu'à 0,5 Mo , tout en restant lisible. Vous pouvez expérimenter un peu.
Si vous voulez une taille plus petite (à la fois du fichier et de l'image/PDF), vous pouvez utiliser -resize #%
, par exemple. -resize 75%
. Sur votre exemple de PDF, cela rend cependant les petits caractères en bas pratiquement illisibles.
Si vous manquez encore d'espace, en particulier pour les PDF multipages, vous pouvez compresser davantage en ajoutant les fichiers à une archive ZIP (ou autre). Cela a ramené la taille du fichier à 0,43 Mo sur ce PDF de test (la réduction de la qualité de compression JPEG a un effet beaucoup plus drastique). Vous pouvez également diviser le fichier PDF en pages avec pdftk
, comme @glallen l'a suggéré dans sa modification, ou scinder l'archive et recombiner à l'autre bout.
2 Mo est également une limite de pièce jointe plutôt petite, vous voudrez peut-être vous tourner vers d'autres fournisseurs de messagerie. De mémoire, GMail fournit plus de 10 Mo par e-mail.
Ces options, et bien d'autres, sont entièrement documentées sur leur site Web.