PDF 파일 크기 줄이기


21

Omnigraffle (OSX)에서 일부 사진을 가져 와서 큰 PDF를 만들었습니다.

이제 해당 PDF를 이메일로 보내야하지만 모든 사진이 5MB이므로 파일 크기가 큽니다. 이메일로 보낼 때 고해상도 사진이 필요하지 않습니다.

그렇다면 어떤 프로그램이 내 PDF를 가져 와서 모든 이미지의 크기를 낮은 해상도로 조정하고 저장합니까?

답변:


24

미리보기에서 PDF를 열고 파일»다른 이름으로 저장… 을 선택한 다음 파일 크기 감소 라는 쿼츠 필터를 선택하십시오 .

여기에 이미지 설명을 입력하십시오


ColorSync 유틸리티 를 사용 하여 필터를 미세 조정하십시오. 복제 파일 크기를 줄이고 나중에 설정을 변경하십시오.

저장할 양에 따라 150-300 DPI 정도 인 Resolution을 제외한 Image Sampling 블록 의 모든 값을 먼저 지우는 것이 좋습니다 .

여기에 이미지 설명을 입력하십시오


ColorSync 유틸리티는 어디에 있습니까?
Karlo

1
@Karlo Utilities 폴더.
Daniel Beck

11

Max Glenister & Milan Kupcevic 에서 영감을 얻음 , Burgi 덕분에 스크립트 예에 대한 설명 : ebook 필터를 사용하여 PDF 크기를 Massive에서 Small로 줄입니다.

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

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)

스크립트가 실제로 무엇을하는지 명확히 할 수 있습니까?
Burgi

ebook 필터를 사용하여 PDF 크기를 Massive에서 Small로 줄입니다.
Mickaël

답변에 해당 정보를 포함시킬 수 있습니까? 답변 방법둘러보기 참조하십시오 .
Burgi

나는 스스로 설명 할 수있는 스크립트를 선호하지만, 그것이 충분하지 않다고 생각하기 때문에, 당신이 요구하는 것이 이루어졌습니다.
Mickaël

1
여기 에 조금 (그리고 가장 좋은) 설명 ...
Abdel Karim Mateos Sanchez

1

원하는 작업을 수행 할 프로그램을 모르지만 동일한 최종 결과를 생성하는 대안은 먼저 그래픽 프로그램으로 이미지를 압축 한 다음 문서에 넣고 PDF로 변환하는 것입니다.


0

멋진 솔루션을 제공해 주신 @ Mickaël에게 감사합니다.

> 기본 작업 및 도구에 대한 몇 가지 예 - - 나는 분할 페이지 제어 할 수있는 작은 개선을 만든 https://github.com/Elia-Sh/toolsAndUtils/blob/master/pdfSplit.sh을

파일을 저장하십시오-

#!/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 $?
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.