Réduction de la taille du fichier PDF


21

J'ai pris quelques photos et en ai fait un énorme PDF sur Omnigraffle (OSX).

Maintenant, je dois envoyer ce PDF par e-mail, mais comme chaque photo fait 5 Mo, le fichier est énorme. Je n'ai pas besoin des photos haute résolution quand je les envoie par e-mail.

Alors, quel programme va prendre mon PDF, redimensionner toutes les images en basse résolution et l'enregistrer?

Réponses:


24

Ouvrez le PDF dans Aperçu, sélectionnez Fichier »Enregistrer sous… et sélectionnez le filtre à quartz nommé Réduire la taille du fichier .

entrez la description de l'image ici


Utilisez ColorSync Utility pour affiner le filtre. Dupliquez Réduisez la taille du fichier et modifiez les paramètres par la suite.

Je vous suggère d'abord d'essayer d'effacer toutes les valeurs du bloc d' échantillonnage d'image , à l'exception de la résolution , qui devrait être d'environ 150 à 300 DPI, selon la quantité que vous souhaitez enregistrer.

entrez la description de l'image ici


Où trouvez-vous l'utilitaire ColorSync?
Karlo

1
Dossier @Karlo Utilities.
Daniel Beck

11

Inspiré de Max Glenister & Milan Kupcevic , Merci à Burgi, explication de l'exemple de script: il réduit la taille du PDF de Massive à Small en utilisant le filtre ebook

brew install ghostscript # aptitude work too if you do not have brew

compresspdf() {
    echo 'Usage: compresspdf [input file] [output file] [screen|ebook|printer|prepress]'
    gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -dPDFSETTINGS=/${3:-"screen"} -dCompatibilityLevel=1.4 -sOutputFile="$2" "$1"
}

compresspdf "Massive.pdf" "Small.pdf" ebook

Options Gs:

-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)

Pouvez-vous clarifier ce que fait réellement votre script?
Burgi

Il réduit la taille des PDF de Massive à Small en utilisant le filtre ebook:
Mickaël

Pouvez-vous inclure ces informations dans votre réponse? Veuillez voir Comment répondre et faire notre visite .
Burgi

Je préfère les scripts auto-explicatifs, mais comme vous ne pensez pas que ce soit suffisant, ce que vous demandez a été fait.
Mickaël

1
Voici un peu (et le mieux) l'expliquez ...
Abdel Karim Mateos Sanchez

1

Je ne connais pas de programme qui fera ce que vous voulez, mais une alternative pour produire le même résultat final serait de compresser d'abord les images avec un programme graphique, puis de les mettre dans un document et de les convertir au format PDF.


0

Merci @ Mickaël, pour ta solution géniale,

J'ai créé une amélioration mineure pour contrôler la page de fractionnement -> l'action par défaut, et quelques exemples pour l'outil - https://github.com/Elia-Sh/toolsAndUtils/blob/master/pdfSplit.sh

enregistrez le fichier -

#!/bin/bash

# inspired by: 
#   /superuser/293856/reducing-pdf-file-size
#   https://www.ghostscript.com/doc/current/Use.htm#File_output

usage() {
    cat<<EOF
Usage:
    ${0} <input file> <output file> [screen|ebook|printer|prepress]

EOF
}
# Examples:
# Note: Ghostscript must be installed on your system
# Note that <n> represents the number of pages in the original document;

#     * Only split file to pages; no range available -
#         \$ ${0} someFile.pdf
#       will create the following single page files:
#         someFile_page_0001.pdf, someFile_page_0002.pdf someFile_page_0003.pdf, someFile_page_000<n>.pdf

#     * Split page to custom output file name -
#         \$ ${0} someFile.pdf newFileName_pageNumer_%2d.pdf
#       will create the following single page files:
#         newFileName_pageNumer_01.pdf, newFileName_pageNumer_02.pdf, newFileName_pageNumer_03.pdf, newFileName_pageNumer_0<n>.pdf

#     * Only reduce quality of pdf file !without! splitting -
#         \$ ${0} someFile.pdf newFileName.pdf ebook
#       will create the following single file: newFileName.pdf with reduced quality

#     * Reduce quality !and! split pdf to single pages -
#         \$ ${0} someFile.pdf newFileName_%2d.pdf ebook
#       will create the following single page files, with lower qualuty
#         newFileName_page_01.pdf, newFileName_page_02.pdf, newFileName_page_03.pdf, newFileName_page_0<n>.pdf

### main ###
DEFAULT_QUALITY="printer"
numberOfArguments=$#

case $numberOfArguments in
    1)
        # only split the file
        fileNameInput=$1
        fileNameOutput="${fileNameInput}_page_%04d.pdf"
        pdfSettings=$DEFAULT_QUALITY
        ;;
    2)
        # user supplied input and output files
        fileNameInput=$1
        fileNameOutput=$2
        pdfSettings=$DEFAULT_QUALITY
        ;;
    3)
        # user supplied input and output files
        fileNameInput=$1
        fileNameOutput=$2
        pdfSettings=$3
        ;;
    *)
    # incorrect syntax print usage and exit
        echo "Error: Illegal number of parameters."
        usage
        exit 1
    ;;
  esac

if [[ ! -f $fileNameInput ]]; then
    echo "Error: ${fileNameInput} not found!"
    exit 2
fi

if ! which gs > /dev/null 2>&1; then
    echo "Error: Looks like the Ghostscript package is not installed on your system."
    exit 3
fi

cmdToExecute="gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH \
    -dPDFSETTINGS=/$pdfSettings -dCompatibilityLevel=1.4 \
    -sOutputFile=$fileNameOutput $fileNameInput"

echo -e "Executing:\n    "$cmdToExecute

$cmdToExecute
# finish script with the return code from gs command
exit $?
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.