628 votes

Comment puis-je réduire la taille du fichier d'un PDF scanné ?

J'ai un fichier PDF de 72,9 Mo que je dois réduire à moins de 500 Ko.

Le fichier était une image JPEG que j'avais scannée, puis convertie en PDF.

1 votes

Cela dépend de ce qui consomme l'espace...besoin de beaucoup plus d'informations. compresser l'espace des images pourrait aider, mais si vous essayez un grand tas de fichiers, cela ne fonctionnera pas. sérieusement besoin de plus d'infos.

1 votes

Convertissez-le en DjVu, plutôt que d'essayer de le réduire à une taille de PDF impossible (selon la source)

0 votes

Le fichier était une image jpeg que j'avais numérisée, puis convertie en pdf.

10voto

Gabriel Staples Points 5149

Références cette réponse et cette réponse, et après avoir essayé plusieurs des réponses ici, et avoir fait beaucoup de recherches et d'expérimentations, j'ai élaboré ce qui suit. Notez que j'ai supprimé la partie -dCompatibilityLevel=1.4 de la commande utilisée dans certaines autres réponses ici car ce tableau indique que les valeurs 1.5 ou 1.7 sont automatiquement utilisées pour ce paramètre aujourd'hui (27 déc. 2020), et il n'est pas nécessaire de remplacer ces valeurs.

Utilisez Ghostscript (gs) pour compresser input.pdf en output.pdf

3 niveaux principaux de compression :
Note : vous pouvez également ajouter -dQUIET pour supprimer toutes les sorties vers stdout. Voir : https://www.ghostscript.com/doc/current/Use.htm.

  1. Faible compression : 300 dpi (taille de fichier importante)

    gs -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dNOPAUSE -dBATCH \
    -sOutputFile=output.pdf input.pdf
  2. [MEILLEUR dans mon test] Compression moyenne (recommandée) : 150 dpi (taille de fichier moyenne)

    gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook   -dNOPAUSE -dBATCH \
    -sOutputFile=output.pdf input.pdf
  3. Haute compression : 72 dpi (petite taille de fichier -- peut produire des résultats granuleux ou illisibles dans certain cas, donc essayez et testez)

    gs -sDEVICE=pdfwrite -dPDFSETTINGS=/screen  -dNOPAUSE -dBATCH \
    -sOutputFile=output.pdf input.pdf

Vous pouvez également ajouter time devant la commande pour voir combien de temps cela prend (cela fonctionne avec n'importe quelle commande Linux). Exemple de sortie :

$ time gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -sOutputFile=out.pdf in.pdf
GPL Ghostscript 9.50 (2019-10-15)
Copyright (C) 2019 Artifex Software, Inc.  All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Processing pages 1 through 15.
Page 1
Loading NimbusSans-Regular font from /usr/share/ghostscript/9.50/Resource/Font/NimbusSans-Regular... 5205104 3852122 2872760 1487237 3 done.
Page ...
...
...
...
real    0m1.326s
user    0m1.142s
sys     0m0.048s

Si vous ajoutez -dQUIET à la commande, aucune sortie de Ghostscript n'est affichée, et vous obtenez ceci (en utilisant time devant) :

$ time gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -dQUIET -sOutputFile=out.pdf in.pdf

real    0m1.018s
user    0m0.976s
sys     0m0.040s

Vous pouvez également utiliser ps2pdf, qui est un wrapper autour de gs, et produit des résultats très similaires, mais pas exactement identiques. Je préfère simplement utiliser gs directement, comme indiqué ci-dessus, cependant.

  1. Faible compression : 300 dpi (taille de fichier importante)

    ps2pdf -dPDFSETTINGS=/printer input.pdf output.pdf
  2. Compression moyenne (recommandée) : 150 dpi (taille de fichier moyenne)

    ps2pdf -dPDFSETTINGS=/ebook   input.pdf output.pdf
  3. Haute compression : 72 dpi (petite taille de fichier -- peut produire des résultats granuleux ou illisibles dans certain cas, donc essayez et testez)

    ps2pdf -dPDFSETTINGS=/screen  input.pdf output.pdf

Tests de compression PDF

En testant les commandes gs ci-dessus sur la sortie de mon script pdf2searchablepdf ici, je vois ce qui suit :

  1. Faible compression : n'a aucun effet significatif puisque mon script produit déjà des PDF de sortie à 300 dpi. Ainsi, un PDF d'entrée de 3,8 Mo en 3 pages donne un PDF de sortie d'environ ~3,8 Mo.
  2. [MEILLEUR] Compression moyenne : compresse bien le fichier ! Un PDF d'entrée de 3,8 Mo en 3 pages donne un PDF de sortie d'environ ~0,95 Mo.
  3. Haute compression : peut être trop importante. Un PDF d'entrée de 3,8 Mo en 3 pages donne un PDF de sortie d'environ ~0,37 Mo, MAIS dans mon test particulier est complètement illisible, puisque le PDF d'entrée était déjà de qualité/petite résolution quelque peu médiocre au départ. Si vous commencez avec un PDF d'entrée de haute qualité/grande résolution, vous pourriez obtenir des résultats bien meilleurs et lisibles.

Documentation Ghostscript (gs) :

Pour tous les -d ("définir") PDFSETTINGS disponibles, voir ici : https://www.ghostscript.com/doc/current/VectorDevices.htm#PSPDF_IN. J'ai cité cette section ci-dessous, sauf que j'ai ajouté les valeurs DPI pour chaque paramètre en gras, comme prises de ce tableau ici. Vous pouvez consulter ce tableau pour voir les dizaines de paramètres de plus bas niveau choisis par gs pour chaque option PDFSETTINGS.

Contrôles et fonctionnalités spécifiques à l'entrée PostScript et PDF

-dPDFSETTINGS=configuration

Préconfigure les "paramètres de distillation" vers l'une des quatre configurations prédéfinies :

  • /screen (72 dpi) sélectionne une sortie à basse résolution similaire à la configuration "Optimisé pour l'écran" de l'Acrobat Distiller (jusqu'à la version X).
  • /ebook (150 dpi) sélectionne une sortie à résolution moyenne similaire à la configuration "eBook" de l'Acrobat Distiller (jusqu'à la version X).
  • /printer (300 dpi) sélectionne une sortie similaire à la configuration "Optimisé pour l'impression" de l'Acrobat Distiller (jusqu'à la version X).
  • /prepress (300 dpi) sélectionne une sortie similaire à la configuration "Optimisé pour la prépresse" de l'Acrobat Distiller (jusqu'à la version X).
  • /default (72 dpi) sélectionne une sortie destinée à être utile dans une grande variété d'utilisations, éventuellement au détriment d'un fichier de sortie plus volumineux.

Vous pouvez également voir les définitions de diverses options sur cette page : https://www.ghostscript.com/doc/current/Use.htm.

-dNOPAUSE
Désactive l'invite et la pause à la fin de chaque page. Normalement, on devrait l'utiliser (avec -dBATCH) lors de la production de sortie sur une imprimante ou dans un fichier ; cela peut également être souhaitable pour les applications où un autre programme "pilote" Ghostscript.

-dBATCH
Force Ghostscript à quitter après le traitement de tous les fichiers nommés sur la ligne de commande, au lieu d'entrer dans une boucle interactive lisant des commandes PostScript. Équivalent à mettre -c quit à la fin de la ligne de commande.

-dQUIET
Supprime les commentaires d'informations habituels sur la sortie standard. C'est actuellement nécessaire lors de la redirection de la sortie de l'appareil vers la sortie standard.

6voto

user179584 Points 77

Je viens de rencontrer ce problème moi-même. Si vous utilisez simple scan, sélectionnez le mode texte pour les scans de basse résolution et vous n'aurez pas besoin de vous soucier de la ligne de commande. Juste en passant.

1 votes

Ceci est la seule réponse dans ce fil de discussion qui a résolu mon problème. J'ai minimisé Simplescan, mais c'était vraiment la réponse pour moi, au lieu de lutter contre Xsane dans ce qui semblait être une agonie sans fin.

6voto

Antonello Points 679

Pour moi, l'option screen de gs était trop mauvaise, et celle de ebook trop grande.

Mon document original contenait du texte en couleur et des images en noir et blanc (selon la page).

La meilleure solution que j'ai trouvée a été :

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true -dDownsampleGrayImages=true -dDownsampleMonoImages=true -dColorImageResolution=130 -dGrayImageResolution=130 -dMonoImageResolution=130 -r130 -dNOPAUSE  -dBATCH -sOutputFile=output_lr.pdf input.pdf

Remarquez que le niveau de compression n'est pas linéaire... si je spécifiais 135, cela ne comprimait pas, j'ai trouvé que 130 était (dans mon cas) la résolution maximale qui permettait une compression.

5voto

mbroshi Points 158

Depuis que ce lien était le premier pour moi lorsque j'ai cherché dans Google, j'ai pensé ajouter une autre possibilité. Aucune des solutions ci-dessus ne fonctionnait pour moi sur un fichier PDF exporté depuis Inkscape (15 Mo), mais j'ai finalement pu le réduire à 1 Mo en l'ouvrant dans GIMP, et en l'exportant à nouveau en PDF.

Une autre option qui s'est approchée (mais le texte était un peu flou) était l'utilitaire convert d'ImageMagick :

convert -compress Zip input.pdf output.pdf

1 votes

Je suppose que c'est ce que vous vouliez dire par "un peu flou", mais pour clarifier, convert -compress Zip semblait rasteriser tous les vecteurs.

5voto

Steve Goykovich Points 417

Contrôlez la qualité de compression :

#!/bin/sh
INPUT=$1; shift
OUTPUT=$1; shift
GS_BIN=/usr/bin/gs
QFACTOR="0.40"

# Qualité de compression d'image
#
# Qualité HSamples VSamples QFactor
# Minimum [2 1 1 2] [2 1 1 2] 2.40
# Faible  [2 1 1 2] [2 1 1 2] 1.30
# Moyenne  [2 1 1 2] [2 1 1 2] 0.76
# Élevée  [1 1 1 1] [1 1 1 1] 0.40
# Maximale [1 1 1 1] [1 1 1 1] 0.15 

${GS_BIN} -dBATCH -dSAFER -DNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=${OUTPUT} -c "<< /ColorImageDict << /QFactor ${QFACTOR} /Blend 1 /HSample [1 1 1 1] /VSample [1 1 1 1] >> >> setdistillerparams" -f ${INPUT}

0 votes

...donc à la fois INPUT et OUTPUT sont le même argument? Vous voudrez peut-être ajouter des directives d'utilisation.

2 votes

Notez le shift. Le premier paramètre est le fichier d'entrée, le second est le fichier de sortie et le reste des paramètres sera passé à gs tel quel.

0 votes

Je pense que vous voulez des échantillons HS et VS, pas des échantillons H et V. Voir par exemple les documents de ps2pdf ou le manuel de référence du langage PostScript. Il est également peut-être utile de noter que la plage de facteur Q autorisée va de 0 à 1 000 000 et que des valeurs plus faibles produisent une meilleure qualité.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X