명령줄에서 PDF 파일의 크기를 줄이는 방법

명령줄에서 PDF 파일의 크기를 줄이는 방법

이 질문에 대한 답변이 다른 스레드에서 나온 것으로 알고 있지만 어떤 솔루션도 나에게 도움이 되지 않았습니다. 수백만 개의 색상 포인트(맨해튼 플롯)가 포함된 4개의 플롯이 포함된 PDF 파일이 있습니다. PDF 파일이 너무 커서(~100MB) 컴퓨터에서 제대로 열 수도 없습니다. 나는 gs다음과 같은 명령을 시도했습니다

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -q -o output.pdf manhattan_plots_long.pdf

하지만 작동하지 않는 것 같습니다. "색 공간을 sRGB로 변환할 수 없습니다. 정책을 LeaveColorUnchanged로 되돌립니다."라는 오류 메시지가 나타납니다.

이 오류를 해결하기 위한 다른 코드를 찾을 수 있지만 새 PDF 파일의 크기가 동일합니다!

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH \
  -dAutoRotatePages=/None -dUseCIEColor -sOutputFile=output.pdf input.pdf

나는 무엇이 잘못되었는지 이해하지 못합니다. 내 문제에 대한 해결책이 있습니까?

답변1

-r150두 번째 명령에 추가해 보십시오 .

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH \ -dAutoRotatePages=/None -dUseCIEColor -r150 -sOutputFile=output.pdf input.pdf

150보다 작은 숫자를 사용하여 이미지 DPI를 낮출 수 있습니다.

또 다른 유용한 옵션은-dCompressFonts=true

답변2

파일이 보이지 않기 때문에 고품질 인쇄를 위한 매우 상세한 문서(예: 대형 포스터)가 있다고 추측할 수 있습니다. 이러한 그래픽은 Ghostscript가 저장하려는 벡터 그래픽일 가능성이 높습니다. @Academiphile의 제안에 따라 문서의 개별 페이지를 화면 밖에서 충분히 낮은 해상도의 래스터 이미지로 렌더링합니다.

ghostscript -dNOPAUSE -dBATCH -sDEVICE=tiffgray -sOutputFile=output.tif input.pdf

결과적으로 여러 페이지로 구성된 tif는 커지지만 선택한 뷰어를 사용하여 이미지를 계속 볼 수 있습니다. 파일에 대해 다른 작업(예: 편집 및 인쇄 - 프린터 작업자가 화를 내거나 신경 쇠약해질 수 있음)을 수행하려고 시도하지 마십시오.

답변3

명령을 실행하기 전에 명령을 수정하거나(예: 패딩) 매개변수와 함께 별칭을 사용할 수 있는 일종의 별칭을 생성하는 솔루션을 찾는 동안 이 스레드를 발견했습니다. 나는 비슷한 솔루션을 찾는 다른 사람들에게 도움이 될 것이라고 생각하는 함수를 만들었습니다. 이러한 유형의 함수를 .bashrc 파일에 직접 삽입할 수 있습니다.

## Function to compress PDF
compress-high() {
    # compress pdf $2 into $1 using minimizing size
    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$1 $2
}

이 특정 예는 ghostscriptpdf 압축을 위한 것입니다. $1은 압축된 pdf의 이름을 나타내는 첫 번째 매개변수이고, $는 압축할 입력 pdf의 이름을 나타내는 두 번째 매개변수입니다. 이는 다른 용도로 쉽게 적용할 수 있습니다.

관련 정보