Mam plik PDF o wielkości 72,9 MB, który muszę zmniejszyć do 500 KB.
Plik był obrazem JPEG, który zeskanowałem, a następnie przekonwertowałem do formatu pdf.
pdf
compression
tamimym
źródło
źródło
pdfopt
ma prostą składnię i poprawia szybkość ładowania i przewracania stron w erze iPada. :-)Odpowiedzi:
aking1012 ma rację. Więcej informacji na temat możliwych osadzonych obrazów, hiperłączy itp. Byłoby znacznie łatwiej odpowiedzieć na to pytanie!
Oto kilka rozwiązań skryptów i wiersza poleceń. Używaj według własnego uznania.
źródło
Użyj następującego polecenia ghostscript :
-dPDFSETTINGS=/screen
niższa jakość, mniejszy rozmiar. ( 72 dpi )-dPDFSETTINGS=/ebook
dla lepszej jakości, ale nieco większych plików pdf. ( 150 dpi )-dPDFSETTINGS=/prepress
wyjście podobne do ustawienia „Prepress Optimized” programu Acrobat Distiller ( 300 dpi )-dPDFSETTINGS=/printer
wybiera dane wyjściowe podobne do ustawienia „Optymalizacja wydruku” programu Acrobat Distiller ( 300 dpi )-dPDFSETTINGS=/default
wybiera dane wyjściowe, które mają być przydatne w szerokim zakresie zastosowań, być może kosztem większego pliku wyjściowegoźródło
screen
ustawienie było dla mnie zbyt niskiej jakości, aleebook
działało dobrze, zmniejszając plik PDF oparty na skanowaniu 33 Mb do 3,6 Mb i utrzymując go w bardzo dobrej czytelności. Inne opcje dla tej-dPDFSETTINGS
opcji są wymienione tutaj: milan.kupcevic.net/ghostscript-ps-pdf i dobrym pomysłem może być uwzględnienie ich w tej odpowiedzi.Moim ulubionym sposobem na to jest konwersja pdf na ps i odwrotnie. Jednak nie zawsze działa, ale kiedy działa, wyniki są dobre:
Działa to również bezpośrednio na pliki pdf, jak sugerowano w komentarzach.
Niektórzy użytkownicy zgłaszają również większy sukces podczas korzystania z ustawień ebooka w następujący sposób:
źródło
ps2pdf intput.pdf output.pdf
Jeśli masz plik pdf ze zeskanowanymi obrazami , możesz go użyć
convert
do utworzenia pliku pdf z kompresją jpeg (możesz użyć tej metody na dowolnym pliku pdf, ale utracisz wszystkie informacje tekstowe).Na przykład:
Dostosuj gęstość (np. 100 x 100) i jakość do swoich potrzeb.
W zależności od danych wejściowych kompresja jpeg może nie być najlepszym wyborem ze względu na artefakty kompresji. Masz do wyboru BZip, Faks, Group4, JPEG, JPEG2000, Lossless, LZW, RLE lub Zip jako alternatywne metody kompresji (niektóre dopuszczają tylko obrazy czarno-białe). Szczegółowe informacje można znaleźć tutaj .
Udało mi się osiągnąć świetne współczynniki kompresji zeskanowanych / sfotografowanych dokumentów (w zależności od ustawień). W zależności od źródła dokumentu może być konieczne zmniejszenie głębi kolorów (
-depth
argument).źródło
pdfimages input.pdf pages
do wyodrębniania plików PBM, to można zrobić coś takiego:for page in *.pbm; do convert $page -compress Group4 -type bilevel TIFF:- | convert - output.pdf
. Wszelkie OCR zostaną utracone, więc zwykle to robiępdfsandwich output.pdf
, co wydaje się jeszcze bardziej zmniejszać rozmiar pliku.gs
za kulisami.--density --quality --compress
vs-density -quality -compress
.-resize 50%
również dodać , zmień procent w zależności od tego, ile DPI zostało użyte podczas skanowaniaMusiałem zmniejszyć rozmiar pliku PDF, który zawierał skanowanie dokumentów w pełnym kolorze. Każda z moich stron była obrazem w pełnym kolorze, jeśli chodzi o plik. Były to obrazy stron zawierających tekst i obrazy, ale zostały utworzone przez skanowanie do obrazu.
Użyłem kombinacji poniższego polecenia ghostscript i jednego z innego wątku.
Zmniejszyło to rozdzielczość obrazu do 150 dpi, zmniejszając rozmiar mojego pliku o połowę. Patrząc na dokument, prawie nie było zauważalnej utraty jakości obrazu. Tekst jest nadal doskonale czytelny na moim Nexusie z 2012 roku.
źródło
Oto skrypt do przepisywania zeskanowanych plików PDF:
Możesz go nieco dostosować, aby był bardziej wielokrotnego użytku, ale jeśli masz tylko jeden plik pdf, możesz po prostu zastąpić
$1
go nazwą pliku pdf i zatrzasnąć go w terminalu.źródło
Zwykle używam do tego ps2pdf (łatwiejsza składnia), coś takiego:
Używam następującego skryptu python, aby zmniejszyć rozmiar wszystkich plików pdf w katalogu na serwerze produkcyjnym (8.04). Więc powinno działać.
źródło
To będzie dobry wynik.
źródło
Najlepsze było dla mnie
Inaczej:
pozdrowienia
źródło
pdf2ps input.pdf temp.ps && ps2pdf14 temp.ps output.pdf && rm temp.ps
Właśnie sam napotkałem ten problem. Jeśli używasz prostego skanowania, wybierz tryb tekstowy dla skanów w niskiej rozdzielczości i nie będziesz musiał się martwić o elementy wiersza poleceń. Tylko mówię.
źródło
Kontroluj jakość kompresji:
źródło
shift
. Pierwszy parametr to plik wejściowy, drugi to plik wyjściowy, a pozostałe parametry zostaną przekazane w niezmienionejgs
postaci.Ponieważ ten link był dla mnie pierwszy podczas wyszukiwania w Google, pomyślałem, że dodam jeszcze jedną możliwość. Żadne z powyższych rozwiązań nie działało dla mnie na pliku PDF eksportowanym z Inkscape (15 MB), ale w końcu mogłem go zmniejszyć do 1 MB, otwierając go w GIMP i ponownie eksportując jako pdf.
Inną opcją, która się zbliżyła (ale tekst był trochę niewyraźny), było narzędzie do konwersji ImageMagick:
źródło
convert -compress Zip
Wydaje mi się, że to właśnie rozumiesz przez „trochę zamazany”, ale dla wyjaśnienia, wydaje się, że rasteryzuje wszystkie wektory.W końcu napisałem mój własny skrypt bash, aby rozwiązać ten, używa
mogrify
,convert
igs
wyodrębnić strony PDF jako png, zmieniać ich rozmiar, przekształcają je w 1-bitowym formacie BMP, a następnie odbudować je jako pdf. Zmniejszenie rozmiaru pliku może wynosić ponad 90%. Dostępne na stronie http://www.timedicer.co.uk/programs/help/pdf-compress.sh.php .źródło
Zdecydowanie polecam pdfsizeopt .
Jest o wiele bardziej wydajny pod względem zmniejszania wielkości niż jakikolwiek poprzedni CLI i GUI oprogramowania, które próbowałem (w tym
convert
,gs
,pdftk
itp) - chociaż być może wolniejpngout
aktywna - i nie ma niektórych swoich problemów (nie ciężko obrazy pikselowe / zdegradowane, bez utraty zakładek itp.).Teraz, jeśli chcesz osiągnąć określony rozmiar bez względu na konsekwencje (w tym degradację obrazów do punktu nieczytelności), może to nie być narzędzie, którego potrzebujesz, ale jako zawsze działające rozwiązanie, aby zmniejszyć niepotrzebne duże rozmiary w plikach PDF bez utraty czytelności, informacji i akceptowalnej jakości obrazu, myślę, że to najlepsza opcja. (Uwaga: zwykle używam go po uprzednim wykonaniu wektoryzacyjnego OCR w Adobe Acrobat [funkcja nazywała się „CleanScan”], co może mieć ogromny wpływ na rozmiar niektórych skanowanych dokumentów tekstowych.)
Polecam ogólną instalację Uniksa :
Zainstaluj wszystkie wymagane zależności:
Pobierz i zainstaluj plik wykonywalny:
Stosowanie:
Uwaga dla użytkowników komputerów Mac, którzy znajdą ten post (lub użytkownicy Linuxbrew): istnieje formuła instalacji Homebrew:
źródło
Miałem ten sam problem i cieszyłem się, że znalazłem ten wątek. Konkretnie miałem plik pdf wygenerowany na podstawie zeskanowanych obrazów i musiałem zmniejszyć jego rozmiar bajtu sześciokrotnie.
Niestety żadne z powyższych rozwiązań nie zadziałało :(. Wtedy zdałem sobie sprawę, że gdzieś w skanerze-> jpeg-> pdf rozmiar strony został rozdęty o współczynnik aprx 4. Wszystkie zeskanowane dokumenty miały rozmiar Letter, ale plik pdf miał rozmiar
W końcu uzyskałem pożądane wyniki dzięki poleceniu „konwersja”, które zmieniło zarówno rozmiar, jak i kroki kompresji w jednym:
Zauważ, że doc_orig miał gęstość 72x72 dpi.
źródło
Jeśli konwersja do djvu również będzie w porządku i jeśli nie zostaną użyte żadne kolory, możesz spróbować:
Konwertuj pdf na pliki jpg za pomocą
pdfimages -j
Jeśli zamiast tego otrzymasz pliki PBM, wykonaj pośredni krok:
for FILENAME in $(ls *.pbm); do convert $FILENAME ${FILENAME%.*}.jpg ;done
Polecenie konwersji pochodzi z pakietu imagemagick.
Następnie użyj scantailor, aby zrobić z niego tif.
W ostatnim kroku przejdziesz do scantailors out direcory (gdzie znajdują się tif) i zastosujesz djvubind do tego katalogu.
Powinno to drastycznie zmniejszyć rozmiar pliku bez dużej utraty jakości tekstu. Jeśli chcesz mieć lepszą kontrolę nad backendem ocr, możesz spróbować
djvubind --no-ocr
użyć ocrodjvu, aby później dodać warstwę ocr.Jeśli masz w dokumencie kolory, sprawy stają się nieco bardziej skomplikowane. Zamiast djvubind możesz użyć didjvu, aw scantailor musisz zmienić tryb mieszany i czasami ręcznie wybrać kolorowe obrazy.
źródło
załaduj obraz lub nawet plik pdf do inkscape.
From inkscape: Zapisz w formacie wektorowym (jako natywny plik .svg).
Importuj pliki wektorowe do programu scribus, edytuj układ i eksportuj / zapisz jako .pdf stamtąd
źródło
Super proste narzędzie do kompresji plików PDF: strona GitHub.
Instalacja na Ubuntu:
Używa ghostscript.
źródło
Możesz spróbować:
W tym przypadku jest szybszy niż,
gs
ale kompresuje do 30% dla pliku wejściowego 107,5 Mb.źródło
Dla mnie
screen
opcja gs była zbyt zła, a taebook
za duża.Mój oryginalny dokument zawierał tekst w postaci kolorowych i czarno-białych obrazów (w zależności od strony).
Najlepsze rozwiązanie, jakie wymyśliłem, to:
Zauważ, że poziom kompresji nie jest liniowy. Gdybym określił 135, nie był skompresowany, stwierdziłem, że 130 jest (w moim przypadku) maksymalną rozdzielczością, która osiąga kompresję.
źródło
Użyłem poniższych poleceń, ale nie skompresowało to znacząco mojego pliku pdf. Czasami część porcji była sczerniała po kompresji.
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE
"ps2pdf -dPDFSETTINGS=/ebook %s %s" % (input_file_path, out_file_path)
Po zbyt dużej wędrówce po Internecie po prostu nie mogłem znaleźć odpowiedniej biblioteki kompresji. Natknąłem się
pdfcompressor.com
. To jest po prostu niesamowita strona internetowa. Kompresuje pdf o 95% (15 MB plików). Użyłem więc selenu i Tora do automatyzacji kompresji. Sprawdź moje repozytorium Github. [GITHUB] ( https://github.com/gugli28/PdfCompressor )źródło