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.