Comment sous-échantillonner des images dans un fichier PDF?

Besoin d’une solution basée sur Java ou, au pire, d’une ligne de commande pour Linux.

J’ai essayé d’utiliser Ghostscript:

gs -sDEVICE=pdfwrite -dPDFA -dBATCH -dNOPAUSE -dUseCIEColor \ -sProcessColorModel=DeviceCMYK -sPDFACompatibilityPolicy=1 \ -sOutputFile=downgraded.pdf leon_range_my12_w22_brochure.pdf 

mais j’ai beaucoup d’erreurs …

Voici un exemple de la façon dont vous pouvez sous-échantillonner toutes les images (couleur, gris et mono) à 72 dpi avec une ligne de commande Ghostscript:

 gs \ -o downsampled.pdf \ -sDEVICE=pdfwrite \ -dDownsampleColorImages=true \ -dDownsampleGrayImages=true \ -dDownsampleMonoImages=true \ -dColorImageResolution=72 \ -dGrayImageResolution=72 \ -dMonoImageResolution=72 \ -dColorImageDownsampleThreshold=1.0 \ -dGrayImageDownsampleThreshold=1.0 \ -dMonoImageDownsampleThreshold=1.0 \ input.pdf 

Mettre à jour:
Les *ImageDownsampleThreshold=1.0 sorte que toutes les images dont la résolution est supérieure à la résolution cible de 72 dpi seront sous-échantillonnées. Si ce paramètre n’est pas donné (ou défini sur une valeur différente), les valeurs par défaut seront utilisées: *ImageDownsampleThreshold=1.5 . Cette valeur par défaut ne fera que sous-échantillonner les images avec une valeur de 108 dpi (ou plus) et laisser les autres intactes.

C’est ce que j’utilise:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=OUTPUT.pdf INPUT.pdf

Pour votre référence:

-dPDFSETTINGS = / screen (qualité d’affichage de l’écran uniquement, images 72 dpi)

-dPDFSETTINGS = / ebook (basse qualité, images 150 dpi)

-dPDFSETTINGS = / imprimante (haute qualité, images 300 dpi)

-dPDFSETTINGS = / prépresse (haute qualité, conservation des couleurs, imgs 300 dpi)

-dPDFSETTINGS = / default (presque identique à / screen)

Essayez moonshiner , une interface graphique pour ghostscript.

Pour un document numérisé dans lequel chaque page est une image en couleur, j’ai utilisé une combinaison de la ligne de commande ci-dessus et une autre que j’ai trouvée sur un autre site,

 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \ -dColorImageResolution=150 -dNOPAUSE -dBATCH -sOutputFile=output.pdf input.pdf 

Chacune de mes pages était une numérisation couleur d’un document. Cette ligne de commande réduisait la résolution des pages à 150 dpi, réduisant la taille du fichier de moitié sans perte significative de résolution. C’est toujours bon et le texte est facilement lisible sur mon Nexus 7.