Jak zmniejszyć rozmiar pliku pdf?

51

Szukam sposobu w Ubuntu, aby zmniejszyć rozmiar pliku pdf (poprzez obniżenie jakości obrazów).

Wiem, że można to zrobić w Ghostscript, wpisując następujące polecenie w terminalu:

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

Problem polega na tym, że nie mogę dokładnie określić jakości. Ten parametr -dPDFSETTINGS=/screendecyduje o jakości; ale alternatywy są dość sztywne (na przykład można zrobić -dPDFSETTINGS=/ebookdla nieco lepszej jakości).

Szukam sposobu na zmniejszenie rozmiaru pliku pdf w sposób, który pozwoli mi określić liczbowo żądaną jakość.

Nicole
źródło
Możesz sprawdzić to pytanie i odpowiedzi.
Glutanimate,
To rzeczywiście duplikat!
hectorpal

Odpowiedzi:

57

Udało mi się wprowadzić niewielką zmianę w poleceniu za pomocą opcji -r300 z @drN Opcja -r pozwala ustawić rozdzielczość wyjściową w formacie pdf, a także png.

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default \
    -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages \
    -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf
Tully
źródło
7
To polecenie przekształciło 25 MB 4-stronicowego pliku PDF na plik prawie tej samej jakości, ale 2 MB. Twoje zdrowie!
Yanick Rochon
Działa to z większością plików. Jednak w niektórych przypadkach faktycznie zwiększa rozmiar pliku. Wygląda na -rto, że w tych przypadkach opcja jest ignorowana.
Luís de Sousa
To polecenie zużywało całą pamięć RAM (8 Gb) i zamroziło mojego laptopa plikiem pdf na 1000 stron.
Zrobić
12

Te dwa posty, które opublikowałem na Stackoverflow, powinny ci pomóc. Próbowałem zmniejszyć rozmiar plików pdf, jednocześnie upewniając się, że spełniają one określone dpi lub ppi dla mojej pracy magisterskiej.

Zmniejszanie formatu pdf za pomocą ghostscript

Zmiana rozdzielczości obrazu pdf za pomocą gs

Próbowałeś się bawić convertw Linuksie?

Edytować:

gs \
  -o out300.png \
  -sDEVICE=pngalpha \
  -r300 \
   input.pdf

Jeśli dobrze pamiętam, r300to jest wyjście, dpiale możesz chcieć to sprawdzić. Konwertuje to pdf na png.

LUB

convert -units PixelsPerInch myPic.pdf -density 300 fileout.pdf

Poinformuj nas jak to idzie! Dotyczy to formatu pdf lub dowolnego innego formatu do dowolnego innego formatu. Właśnie użyłem pliku wejściowego myPic.pdf i pliku wyjściowego fileout.pdf

drodzy
źródło
Hmm ... spojrzałem na pytania, z którymi się łączyłeś. Są interesujące, ale trudno jest wyodrębnić konkretne polecenie, którego powinienem użyć. Szukam polecenia z jakąś wartością liczbową, z którą mogę grać, która określi jakość. Czy możesz wykonać takie polecenie? Czy można to zrobić za pomocą konwersji?
Nicole,
Zmodyfikowałem swoją odpowiedź, aby uwzględnić kilka prostszych opcji. Spójrz i daj nam znać! :)
kochany
1
Konwersja zwiększa rozmiar mojego pliku pdf, nawet jeśli używam 100 dpi. Może najlepszym wyborem jest konwersja do formatu png przy użyciu „gs”, a następnie „konwersja”, aby przejść do formatu pdf?
Nicole,
@Nicole Zawsze występowały problemy z konwersjami pdf. Do czego proponujesz użyć pdf?
kochany
@Nicole Zauważyłem, że aby uzyskać najlepszy wynik dla plików pdf / eps, musiałbym wrócić do programu, który utworzył pdf, i zmienić moje opcje zapisywania, aby zapisać w rozdzielczości dpi / ppi, którą chcę. Mam nadzieję, że to pomoże i tak, może to być trochę uciążliwe.
kochany
12

Najprostszym sposobem, jaki znalazłem, jest otwarcie pliku PDF za pomocą LibreOffice Draw, a następnie wyeksportowanie go do formatu PDF z oczekiwanym DPI. Okno dialogowe Eksportuj programu Draw pozwala określić DPI i inne opcje dla eksportowanego pliku PDF.

Serrega
źródło
1
Próbowałem wszystkich innych rzeczy z wiersza poleceń, ale w końcu pozwoliło mi to zwiększyć kompresję wystarczająco do moich celów.
C.Rogers
1
Graficzny sposób, z wciąż dużą kontrolą.
Agmenor,
Dowiedziałem się, że LibreOffice Draw jest lepszy w drukowaniu / eksportowaniu plików PDF niż w czymkolwiek innym, więc +1.
Yoric
1
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=myNewFile.pdf myOldFile.pdf

Myślę, że jest to najłatwiejszy sposób, aby zmniejszyć rozmiar do 50 +/- kb. Na terminalu przejdź do katalogu pliku: przykład

cd ~/document/files

Następnie wpisz powyższy kod, gdzie:

myNewFile.pdf

to nowa nazwa pliku i

myOldFile.pdf

to nazwa pliku.

ConnelBLAZE
źródło