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


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.


294
2018-03-16 17:12


origine


cela dépend de ce qui consomme l'espace ... besoin de beaucoup plus d'informations. La compression de l’espace de l’image peut être utile, mais si vous essayez un jet de pile de fichiers volumineux, cela ne fonctionnera pas. sérieusement besoin de plus d'informations. - RobotHumans
convertissez-le en DjVu, essayez plutôt de réduire au format PDF impossible (selon la source) - zetah
le fichier était une image JPEG que j'avais scannée, puis convertie en pdf. - tamimym
Il semble que cela aide un peu la taille des fichiers, mais pdfopt a une syntaxe simple et améliore le chargement et la vitesse de rotation des pages à l'ère de l'iPad. :-) - Ari B. Friedman
PDF au PS n'est pas efficace dans le fichier PDF scanné, j'essaie de convertir 56 Mo de pdf en fichier ps, mais ps convertir le fichier en 1,3 Go et encore ps2pdf est converti en fichier de 45 Mo


Réponses:


aking1012 a raison. Avec plus d'informations concernant les images embarquées possibles, les hyperliens, etc., il serait beaucoup plus facile de répondre à cette question!

Voici quelques solutions de script et de ligne de commande. Utilisez comme bon vous semble.


119
2018-03-16 17:28



Merci beaucoup pour vos suggestions, le shell Ghostscript a fait des merveilles et l'a réduit à 460 Ko :) - tamimym
Ce n'est pas nécessairement vrai. Si le contenu est passé d'une image à un texte, c'est plus que fessible. [C'est en supposant que le texte est correctement écrit] - monksy
Je vous recommande le script shrinkpdf.sh, vous pouvez personnaliser le code pour utiliser la valeur ppi souhaitée (par défaut 72) et atteindre exactement la taille de fichier nécessaire pour sacrifier la moindre qualité. Cela m'a permis de télécharger un document numérisé de 11 Mo avec un max. taille de 3 MB sans perdre beaucoup de qualité. - Severo Raz
shrinkpdf fonctionne très bien! - AmanicA
Le premier lien, avec le paramètre "/ ebook", réduit un fichier numérisé de 19 Mo à 4,2 Mo et le texte numérisé reste lisible. - dremodaris


Utilisez le suivant Ghostscript commander:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
  • -dPDFSETTINGS=/screen qualité inférieure, taille plus petite. (72 dpi)
  • -dPDFSETTINGS=/ebook pour une meilleure qualité, mais des fichiers PDF légèrement plus grands. (150 dpi)
  • -dPDFSETTINGS=/prepress sortie similaire au paramètre "Prepress Optimized" d'Acrobat Distiller (300 dpi)
  • -dPDFSETTINGS=/printer sélectionne une sortie similaire au paramètre "Print Optimized" d'Acrobat Distiller (300 dpi)
  • -dPDFSETTINGS=/default sélectionne la sortie destinée à être utile sur une grande variété d'utilisations, éventuellement au détriment d'un fichier de sortie plus volumineux

406
2018-02-15 13:53



On peut également créer un script Nautilus pour accéder à cette fonction pour chaque fichier. - Sina
Cela devrait être la réponse acceptée. Ghostscript est la Implémentation de PDF, XPS et PS pour les unices - dom0
@Sina: Il existe en fait un script Nautilus avec une simple interface graphique basée sur Zenity qui utilise cette commande gs avec toutes ses options de qualité: launchpad.net/compress-pdf - Sadi
C'est la bonne réponse à cette question (compression d'un fichier pdf contenant principalement des données bitmap). J'ai trouvé que le screen le réglage était trop faible pour moi, mais ebook a bien fonctionné, en réduisant un PDF de 33 Mo basé sur la numérisation à 3,6 Mo, et en le maintenant très lisible. Autres options pour le -dPDFSETTINGS option sont listés ici: milan.kupcevic.net/ghostscript-ps-pdf, et cela pourrait être une bonne idée de les inclure dans cette réponse. - naught101
gs paramètres de configuration disponibles: ghostscript.com/doc/current/Ps2pdf.htm - Antonios Hadjigeorgalis


Ma façon préférée de le faire est de convertir le pdf en ps et back. Cela ne marche pas toujours, mais quand ça marche, les résultats sont bons:

ps2pdf input.pdf output.pdf

Cela fonctionne aussi directement sur les pdf, comme suggéré dans les commentaires.


123
2018-01-16 09:18



C'est un moyen très simple et efficace de le faire. J'ai été surpris de voir combien cette méthode compressait les fichiers. Merci! - Gabriel
Bien que cette approche unique soit devenue ma solution préférée pour compresser les fichiers pdf, elle brise les liens URL que le document peut avoir (ce qui ne se produit pas avec l'approche de @Michael D). En dehors de cela, la génialité est tout ce que je peux penser à exécuter cet extrait! (: - Rubens
@Rubens Ah. Je ne connaissais pas le fait qu'il casse les liens URL. Merci d'avoir ajouté cela. - don.joey
Cela contourne la protection par mot de passe ... juste dire - jojo
ps2pdf prendra pdfs comme entrées, vous pouvez donc le faire en une seule étape: ps2pdf intput.pdf output.pdf - frabjous


Si tu as un pdf avec images scannées, vous pouvez utiliser convert créer un pdf avec compression jpeg (Vous pouvez utiliser cette méthode sur n'importe quel pdf, mais vous perdrez toutes les informations textuelles).

Par exemple:

convert -density 200x200 -quality 60 -compress jpeg input.pdf output.pdf

Régler densité (par exemple 100x100) et qualité à vos besoins.

Selon votre jpeg d'entrée compression pourrait ne pas être le meilleur choix en raison des artefacts de compression. Vous avez le choix entre BZip, Fax, Group4, JPEG, JPEG2000, Lossless, LZW, RLE ou Zip en tant que méthodes de compression alternatives (certaines n'autorisent que les images en noir et blanc). Pour plus de détails voir ici.

J'ai pu obtenir de bons taux de compression pour les documents numérisés / photographiés (en fonction des paramètres). Selon la source du document, vous souhaiterez peut-être réduire la profondeur de couleur (-depth argument).


105
2018-05-19 17:39



Pour un document numérisé où le texte est ce qui vous intéresse plutôt que les images et la préservation de la profondeur n'est pas un problème, la compression jpeg n'est pas une bonne idée car les artefacts ont tendance à être extrêmement visibles. Si tu utilises pdfimages input.pdf pages pour extraire des fichiers pbm, vous pouvez faire quelque chose comme: for page in *.pbm; do convert $page -compress Group4 -type bilevel TIFF:- | convert - output.pdf. Tout OCR sera perdu alors je fais habituellement pdfsandwich output.pdf, ce qui semble réduire encore plus la taille du fichier. - Brian Z
@BrianZ sure la compression jpeg n'est pas toujours le meilleur choix, mais pour moi c'était la meilleure approche pour les documents de type mixte. J'ai ajouté des informations sur d'autres méthodes de compression à la réponse. - someonr
Cette méthode utilise finalement gs Dans les coulisses. - alfC
J'ai dû utiliser un double tiret pour les options permettant d'exécuter la commande --density --quality --compress contre -density -quality -compress. - Rotareti
Si la qualité d'image n'est pas la préoccupation la plus élevée (et que vous voulez simplement que cette pièce jointe soit suffisamment petite pour être envoyée), vous pouvez ajouter -resize 50% aussi, modifier le pourcentage en fonction de la quantité de DPI utilisée lors de la numérisation - chrki


Je devais réduire la taille d'un fichier PDF contenant des analyses couleur d'un document. Chacune de mes pages était une image en couleur en ce qui concerne le fichier. C'étaient des images de pages contenant du texte et des images, mais elles ont été créées en numérisant vers une image.

J'ai utilisé une combinaison de la commande ghostscript ci-dessous et une autre d'un autre thread.

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

Cela a réduit la résolution de l'image à 150 dpi, réduisant de moitié la taille de mon fichier. En regardant le document, il n'y a presque pas eu de perte notable de qualité d'image. Le texte est toujours parfaitement lisible sur mon Nexus7 2012.


30
2018-01-19 06:25



+1 pour les images d'échantillonnage descendant mais en gardant le texte comme vecteurs. Fait une énorme différence de côté sans rendre mon texte pixélisé. - Jason O'Neil


Voici un script pour réécrire les fichiers PDF scannés:

#!/bin/sh

gs  -q -dNOPAUSE -dBATCH -dSAFER \
    -sDEVICE=pdfwrite \
    -dCompatibilityLevel=1.3 \
    -dPDFSETTINGS=/screen \
    -dEmbedAllFonts=true \
    -dSubsetFonts=true \
    -dColorImageDownsampleType=/Bicubic \
    -dColorImageResolution=72 \
    -dGrayImageDownsampleType=/Bicubic \
    -dGrayImageResolution=72 \
    -dMonoImageDownsampleType=/Bicubic \
    -dMonoImageResolution=72 \
    -sOutputFile=out.pdf \
     $1

Vous pourriez le personnaliser un peu pour le rendre plus réutilisable, mais si vous n’en avez qu’un seul, vous pouvez simplement le remplacer. $1 avec votre nom de fichier pdf et le mettre dans un terminal.


24
2017-08-31 20:29



Travaille un régal, merci Oli. Vous avez répondu à peu près tout ce que j'ai demandé ici jusqu'à présent :-D - Rob Cowell
C’est une bonne réponse mais dans mon cas au moins il faut lot de temps pour convertir un fichier PDF assez volumineux (> 10 Mo) (plus d’une minute). - Gabriel
Je ne suis pas sûr de ce qui se passe, mais un fichier PDF de 30 Mo génère un fichier de 68 Mo. Au lieu de réduire, il s’agrandit. Même sortie si vous utilisez directement ps2pdf comme indiqué dans la prochaine réponse. - Ed Villegas
@EdVillegas La seule chose à laquelle je peux penser (pour expliquer ce type d'augmentation), c'est que les images ont une résolution inférieure à celles générées (72 dpi). Ou en quelque sorte incorporer les polices est sucer tout les polices. - Oli♦


J'utilise habituellement ps2pdf pour cela (syntaxe plus facile), quelque chose comme ceci:

ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF

J'utilise le script python suivant pour réduire la taille de tous les fichiers pdf dans un répertoire sur un serveur de production (8.04). Donc ça devrait marcher.

#!/usr/bin/python

import os

for fich in os.listdir('.'):
        if fich[-3:]=="pdf":
                os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))

15
2017-09-01 07:26



Merci pour la solution alternative. J'ai essayé Oli's en premier et cela m'a donné le résultat dont j'avais besoin, mais je le garderai aussi pour référence future. - Rob Cowell
-dPDFSETTINGS = / L'option imprimante est redimensionnée à 50%. Les ebook sont redimensionnés à 90%. - neouyghur