pdftk 압축 옵션


94

내가 사용 pdftk를 다음 명령 줄을 사용하여 PDF 파일을 압축

pdftk file1.pdf output file2.pdf compress

내 파일의 무게가 감소함에 따라 작동합니다.

압축을 변경하는 [옵션]이 있습니까 ???

아니면 내 파일을 압축하는 다른 솔루션일까요? 일부 그래픽에는 포인트 가 많기 때문에 무겁습니다 . 예를 들어 이러한 그래프를 jpg로 변환하고 압축을 적용하는 방법이 있습니까?


1
내 경험에 따르면 PDF 내용에 따라 다릅니다. 예를 들어 점이 많은 그래프 인 경우 가장 좋은 해결책은 그래프를 png로 변환하고이 png를 pdf에 포함하는 것입니다.
— RockScience

답변:


122

나는 같은 문제가 있었고 두 가지 다른 해결책을 찾았습니다 ( 자세한 내용 은이 스레드 참조). 둘 다 압축되지 않은 PDF의 크기를 크게 줄였습니다.

  • 픽셀 화 (손실) :

    convert input.pdf -compress Zip output.pdf
    
  • 픽셀 화되지 않음 (무손실이지만 약간 다르게 표시 될 수 있음) :

    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH  -dQUIET -sOutputFile=output.pdf input.pdf
    

편집 : 불쾌한 gs 명령을 피하는 다른 옵션 (무손실 압축)을 발견했습니다. qpdf 는 PDF (압축 / 압축 해제, 암호화 / 복호화)를 변환하는 깔끔한 도구이며 gs 명령보다 훨씬 빠릅니다.

qpdf --linearize input.pdf output.pdf

3
대박. gs는 4MB 파일을 339K로 변환하여 나를 위해 일했습니다. 품질이 떨어졌지만 제 목적에 충분히 부합했습니다.
— Sridhar Sarnobat

27
더 나은 품질을 위해 "프린터"PDF 설정을 사용할 수 있습니다.gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
— imriss

10
품질 (및 크기)을 조정하려면 PDFSETTINGS 값을 변경하십시오. 참조 ghostscript.com/doc/current/Ps2pdf.htm#Options
— 1in9ui5t

6
gs대답 의 명령은 포함 된 JPG의 해상도와 품질을 낮추기 때문에 정확히 무손실이 아닙니다. 그러나 그것은 무손실 re입니다. 텍스트로 유지하면서 convert명령은 래스터 그래픽으로 변환합니다.
— tanius 2015 년

14
옵션 -dPDFSETTINGS=을로 설정 /ebook하면 매우 멋진 출력 을 얻을 수 있습니다. 물론 압축되어 있고 일부 jpg 아티팩트가 표시되지만 합리적인 크기로 완전히 읽을 수 있습니다. 감사!
— Joël

35

이 절차는 꽤 잘 작동합니다

pdf2ps large.pdf very_large.ps

ps2pdf very_large.ps small.pdf

시도 해봐.


8
이것은 일반적인 해결책이 아닙니다. 대부분의 경우 결과 pdf가 더 큽니다.
— rotskoff

4
이것은 언급 된 모든 솔루션 중에서 가장 잘 작동했습니다. 큰 이미지 몇 개는 품질 손실이 가장 적은 23MB에서 1.4MB로 줄었습니다.
— AerandiR 2013

1
@rotskoff 문서 유형이 다르기 때문에 일반적인 해결책은 없을 것입니다. 그러나 나는 당신의 요지를 본다. 소프트웨어가 우리에게 가장 적합한 것을 파악하는 것이 좋을 것입니다.
— tiktak

고마워, 이것은 나를 위해 일했지만 qpdf와 gs는 출력 파일의 크기를 줄이지 않았습니다.
— sebastian

1
여기에서 언급 했듯이이 방법의 또 다른 단점은 문서 내부의 URL 링크가 끊어진다는 것입니다.
— ptomato 2014 년

30

tiff2pdfZip / Deflate로 압축을 사용하여 PackBits 압축을 사용하여 400ppi tiff (대부분 8 비트, 24 비트)로 만든 PDF를 압축하려고 합니다. 이러한 모든 방법에 대해 한 가지 문제가있었습니다. 위의 방법 중 어느 것도 Acrobat Pro X에서 수작업으로 수작업으로 만든 책갈피 목차를 보존하지 못했습니다 .에 대한 권장 ebook설정 도 아닙니다 gs. 물론, TOC를 그대로 유지 한 상태로 원본의 복사본을 열고 작업을 수행 할 수는 Replace pages있지만 안타깝게도 이러한 방법 중 어느 것도 시작하기에 만족스러운 작업을 수행하지 못했습니다. 크기를 너무 줄여서 품질이 용납 할 수 없을 정도로 픽셀 화되었거나, 크기를 전혀 줄이지 않았고, 품질 손실에도 불구하고 실제로 크기를 늘 렸습니다.

pdftk compress:

no change in size
bookmarks TOC are gone

gs screen:

takes a ridiculously long time and 100% CPU
errors:
    sfopen: gs_parse_file_name failed.                                 ? 
    | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile
74.8MB-->10.2MB hideously pixellated
bookmarks TOC are gone

gs printer:

takes a ridiculously long time and 100% CPU
no errors
74.8MB-->66.1MB
light blue background on pages 1-4
bookmarks TOC are gone

gs ebook:

errors:
    sfopen: gs_parse_file_name failed.
      ./base/gsicc_manage.c:1050: gsicc_open_search(): Could not find default_rgb.ic 
    | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile
74.8MB-->32.2MB
badly pixellated
bookmarks TOC are gone

qpdf --linearize:

very fast, a few seconds
no size change
bookmarks TOC are gone

pdf2ps:

took very long time
output_pdf2ps.ps 74.8MB-->331.6MB

ps2pdf:

pretty fast
74.8MB-->79MB
very slightly degraded with sl. bluish background
bookmarks TOC are gone

2
이것은 매우 귀중한 연구입니다 (감사합니다!). 그러나 그것은 또한 제가 한순간에 대해 반대 투표에 대해 생각할 정도로 대답이 아닙니다.
— ndemou

3
어떻게 답이되지 않습니까?
— hmj6jmh

22

파일 크기가 여전히 너무 큰 경우 ps2pdf를 사용하여 생성 된 pdf 파일의 해상도를 낮추는 데 도움이 될 수 있습니다.

pdf2ps input.pdf tmp.ps
ps2pdf -dPDFSETTINGS=/screen -dDownsampleColorImages=true -dColorImageResolution=200 -dColorImageDownsampleType=/Bicubic tmp.ps output.pdf

-dColorImageResolution 옵션 의 값을 조정 하여 필요에 맞는 결과를 얻습니다 (값은 DPI 단위의 이미지 해상도를 설명 함). 입력 파일이 회색조 인 경우 회색을 통해 색상 을 바꾸 거나 위 명령에서 두 옵션을 모두 사용하는 것도 도움이 될 수 있습니다. -dPDFSETTINGS 옵션을 / default 또는 / printer 로 변경하여 추가 미세 조정이 가능합니다 . 가능한 모든 옵션에 대한 설명은 ps2pdf 설명서를 참조하십시오 .


1
팁 주셔서 감사합니다. -dPDFSETTINGS를 사용하면 스캔 한 PDF의 크기를 줄일 수 있습니다.
— eshwar

2
감사합니다. 모든 사람의 사용 사례에 대한 일반적인 솔루션이 있다고 생각하지 않습니다.하지만이 스레드에서 거의 모든 솔루션을 시도했으며 이것이 저에게 도움이 된 유일한 솔루션입니다 !!! dColorImageResolution 매개 변수를 "조정"할 수있는 것이 핵심이었습니다.이 정부 사이트에서 허용 할 수있을만큼 문서 크기를 작게 만들어야하지만 읽을 수있을만큼 충분히 커야했습니다. 고마워요, Sam 삼촌, 또 다른 고통스러운 후프를 뛰어
— 넘어 주셔서

4

nullglob이 제안한 대로 gpdf를 시도한 후 cups-pdf 프린터를 사용하여 동일한 압축 결과 (~ 900mb 파일 ~ 30mb까지)를 얻었습니다. 이미 문서를보고 있고 하나 또는 두 개의 문서 만 압축해야하는 경우이 방법이 더 쉬울 수 있습니다.

Ubuntu 12.04에서는 다음과 같이 설치할 수 있습니다.

sudo apt-get install cups-pdf

설치 후 시스템 도구 > 관리 > 인쇄 > 'PDF'를 마우스 오른쪽 버튼으로 클릭하고 '사용'으로 설정하십시오.

기본적으로 출력은 홈 디렉토리의 PDF 폴더에 저장됩니다 .


4

한 줄 pdf2ps 옵션 (Lee)은 실제로 pdf 크기를 늘 렸습니다. 그러나 두 단계가 더 좋았습니다. &에서 표준 입력 / 출력 및 파이프로의 리디렉션을 사용하여 단일 항목으로 결합 할 수 있습니다.

pdf2ps large.pdf-| ps2pdf-small.pdf

xsane에서 생성 한 PDF를 18 Mo에서 630 ko로 줄였습니다!

링크가 손실되지만 현재 예제에서는 문제가되지 않으며 원하는 결과를 얻는 가장 쉬운 방법이었습니다.


ps2pdf대신 시도해 볼 수 있습니다. @ Lee의 답변에 대한 내 의견 을 참조하십시오 .
— myrdd

3

pdf2ps large.pdf small.pdf 두 단계 대신 충분합니다.

pdf2ps large.pdf very_large.ps 
ps2pdf very_large.ps small.pdf

그러나 ps2pdf large.pdf small.pdf더 나은 선택입니다.

  • ps2pdf 훨씬 빠르다
  • 추가 매개 변수를 지정하지 않으면 pdf2ps때때로 더 큰 파일이 생성됩니다.

이 옵션을 어디에서 찾았습니까? 일부 최신 버전의 기능입니까? 그것은 나를 위해 작동하지 않았습니다. 내가 출력 파일 이름에도 불구하고 out.pdf, 그것은 PS 파일이되었다 ( mimetype out.pdf말한다 out.pdf: application/postscript).
— myrdd

내 최신 버전 9.xx입니다. 확실하지 않습니다.
— 리

저는 9.25 인 debian stable ( "stretch") 패키지 버전을 사용하고 있습니다. 입력하여 실제로 pdf 파일이 있는지 확인할 수 mimetype small.pdf있습니까?
— myrdd

의 출력은 mimetype small.pdf입니다 small.pdf: application/pdf. 접미사에 따라 자동으로 파일 유형을 결정할 수 있다고 생각합니다.
— 리

1
@myrdd 네, 테스트를했습니다. ps2pdf더 나은.
— Lee

1

qpdf를 사용하여 파일 크기가 크게 줄어들지 않았습니다. 내가 찾은 가장 좋은 방법은 pdftk가 완료된 후 ghostscript를 사용하여 pdf를 포스트 스크립트로 변환 한 다음 다시 pdf로 변환하는 것입니다. PHP에서는 exec를 사용합니다.

$ps = $save_path.'/psfile.ps';
exec('ps2ps2 ' . $pdf . ' ' . $ps);
unlink($pdf);
exec('ps2pdf ' .$ps . ' ' . $pdf);
unlink($ps);

몇 분 전에 이것을 사용하여 490k에서 71k로 pdftk 출력을 가져 왔습니다.


2
PHP는 완전히 불필요한 복잡성을 추가하고이 답변의 적용 좁아
— ndemou

-2

나는 같은 문제가 있었고이 기능을 사용하여 개별 페이지를 압축하여 파일 크기가 원래 크기의 최대 1/3까지 압축되었습니다.

for (int i = 1; i <= theDoc.PageCount; i++)
{
       theDoc.PageNumber = i;
       theDoc.Flatten();
}

1
pdftk의 C ++ 라이브러리를 사용하고 있습니까?
— RockScience

-3

선택 가능한 텍스트가 많이 포함 된 PDF를 압축하려는 경우 Windows에서 NicePDF Compressor를 사용할 수 있습니다 . "Flate"옵션을 선택하십시오. 모든 것을 시도한 후 (cpdf, pdftk, gs) 마침내 1360 페이지 PDF를 500MB에서 10MB로 압축하는 데 도움이되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.