Jak zmniejszyć rozmiar pliku pdf zawierającego obrazy?

19

Mam plik pdf, który zawiera obrazy i chcę zmniejszyć jego rozmiar, aby przesłać go do witryny z ograniczeniem rozmiaru.

Jak mogę zmniejszyć rozmiar pliku pdf z wiersza poleceń?

Pandya
źródło

Odpowiedzi:

26

Możesz użyć gs- GhostScript (interpreter i podgląd języka PostScript i PDF):

  • Ustaw pdfwrite jako urządzenie wyjściowe przez-sDEVICE=pdfwrite
  • Użyj odpowiedniego -dPDFSETTINGS.

    Z dokumentacji :

    -dPDFSETTINGS = konfiguracja Ustawia
    „parametry destylatora” na jedno z czterech predefiniowanych ustawień:

    • / screen wybiera wyjście niskiej rozdzielczości podobne do ustawienia „Optymalizacja ekranu” programu Acrobat Distiller.
    • / ebook wybiera dane wyjściowe o średniej rozdzielczości podobne do ustawienia „eBook” programu Acrobat Distiller.
    • / drukarka wybiera dane wyjściowe podobne do ustawienia „Optymalizacja drukowania” programu Acrobat Distiller.
    • / prepress wybiera wyjście podobne do ustawienia „Prepress Optimized” w programie Acrobat Distiller.
    • / default wybiera dane wyjściowe, które mają być użyteczne w szerokim zakresie zastosowań, być może kosztem większego pliku wyjściowego.
  • -oopcja pliku wyjściowego, który również ustawia -dNOPAUSEi -dBATCH(patrz Parametry związane z interakcją )

Przykład:

$ du -h file.pdf 
27M file.pdf

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

$ du -h output.pdf 
900K    output.pdf

Tutaj -qpomija normalne komunikaty startowe, a także robi równoważne, -dQUIETktóre pomijają rutynowe komentarze informacyjne

Pandya
źródło
Nie działa dla mnie. Wyjściowe pliki PDF, które można przeszukiwać, tesseractpozostają całkowicie niezmienione podczas próby zmniejszenia ich za pomocą tego polecenia.
Gabriel Staples,
3
ps2pdf input.pdf output.pdf

Otrzymałem odpowiedź od ask ubuntu i zadziałało to dla mnie. To faktycznie zmniejszyło 18,1 Mb do 1,0 Mb

Obywatel
źródło
Nie działa dla mnie. Wyjściowe pliki PDF, które można przeszukiwać, tesseractpozostają całkowicie niezmienione podczas próby zmniejszenia ich za pomocą tego polecenia.
Gabriel Staples,
Jest to niezwykle proste, jeśli nie chcesz wybierać wszystkich opcji, których potrzebuje GhostScript. Strony podręcznika mówią, że skrypt akceptuje te same parametry gs, co podaje następujący przykład:ps2pdf -dPDFSETTINGS=/prepress figure.ps proof.pdf
Cris Luengo
0

Możesz spróbować:

$ time pdftk myFile.pdf output myFile__SMALLER.pdf compress
GC Warning: Repeated allocation of very large block (appr. size 16764928):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 11837440):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 7254016):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 34041856):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
    May lead to memory leak and poor performance.

real    0m23.677s
user    0m23.142s
sys     0m0.540s
$ du myFile*.pdf
108M    myFile.pdf
74M     myFile__SMALLER.pdf

Jest szybszy niż, gsale kompresuje do 30% w tym przypadku dla pliku wejściowego 107,5 Mb.

SebMa
źródło
Nie działa dla mnie. Wyjściowe pliki PDF, które można przeszukiwać, tesseractpozostają całkowicie niezmienione podczas próby zmniejszenia ich za pomocą tego polecenia.
Gabriel Staples,