Jak usunąć obrazy z pliku PDF

13

Mam dość duży (~ 100 MB) dokument PDF z dużą ilością obrazów (jako ilustracje i obrazy tła) i chciałbym mieć kopię tego pliku pdf bez obrazów, ale nie mogę się dowiedzieć, jak to zrobić Zrób to.

Nie mówię o konwertowaniu go tylko na tekst, chciałbym zachować akapity / tabele / wiele kolumn takimi, jakie są.

Czuję się swobodnie z linii poleceń i mam kilka komputerów z różnymi dystrybucjami, których mogę używać.

Ornux
źródło
Ponieważ mówimy o 500-stronicowym dokumencie z wieloma obrazami na każdej stronie, szukam automatycznego sposobu na usunięcie każdego obrazu.
Ornux

Odpowiedzi:

14
cpdf -draft original.pdf -o version_without_images.pdf

Nie ma go w repozytoriach, ale można znaleźć plik do pobrania ( wstępnie skompilowany lub źródłowy ) na ich stronie internetowej .


Podręcznik :

15.1 Projekty dokumentów

Opcja -draft usuwa obrazy bitmapowe (fotograficzne) z pliku, dzięki czemu można go wydrukować z mniejszą ilością atramentu. Opcjonalnie można dodać opcję -box, wypełniając puste pola przekreślonym polem oznaczającym miejsce, w którym znajdował się obraz. Nie gwarantuje się, że będzie w pełni widoczna we wszystkich przypadkach (mapa bitowa mogła być częściowo zakryta obiektami wektorowymi lub przycięta w oryginale). Na przykład:

 cpdf -draft -boxes in.pdf -o out.pdf
Rinzwind
źródło
1
To jest dokładnie to, czego szukałem. Plik wyjściowy jest po prostu idealny. Dziękuję bardzo!
Ornux
@Rinzwind Pamiętaj, że link „ich strona internetowa” faktycznie prowadzi do pliku zip.
Jos
Hmm .. dla mnie ciągle dodaje prawie losowe linie w poprzek tekstu, a rozmiar pliku faktycznie nieznacznie rośnie, zamiast się zmniejszać.
Henning Koehler
23

Najnowsze wersje Ghostscript również mogą to zrobić. Po prostu dodaj parametr -dFILTERIMAGEdo swojego polecenia.

Są jeszcze dwa nowe parametry, które można dodać w celu selektywnego usuwania typów treści „wektor” i „tekst” :

  1. -dFILTERIMAGE: tworzy wynik, w którym wszystkie obrazy rastrowe są usuwane.

  2. -dFILTERTEXT: tworzy wynik, w którym wszystkie elementy tekstowe są usuwane.

  3. -dFILTERVECTOR: tworzy wynik, w którym wszystkie rysunki wektorowe są usuwane.

Dowolne dwie z tych opcji można łączyć. (Jeśli połączysz wszystkie 3, wszystkie strony zostaną wygaszone ...)

Przykłady

Oto zrzut ekranu z przykładowej strony PDF, która zawiera wszystkie 3 typy treści wspomniane powyżej:

Zrzut ekranu oryginalnej strony PDF zawierającej elementy „obraz”, „wektor” i „tekst”.
Zrzut ekranu oryginalnej strony PDF zawierającej elementy „obraz”, „wektor” i „tekst”.


Uruchomienie następujących 6 poleceń spowoduje utworzenie wszystkich 6 możliwych wariantów pozostałej zawartości:

 gs -o noIMG.pdf -sDEVICE = pdfwrite -dFILTERIMAGE input.pdf
 gs -o noTXT.pdf -sDEVICE = pdfwrite -dFILTERTEXT input.pdf
 gs -o noVCT.pdf -sDEVICE = pdfwrite -dFILTERVECTOR input.pdf

 gs -o onlyIMG.pdf -sDEVICE = pdfwrite -dFILTERVECTOR -dFILTERTEXT input.pdf
 gs -o onlyTXT.pdf -sDEVICE = pdfwrite -dFILTERVECTOR -dFILTERIMAGE input.pdf
 gs -o onlyVCT.pdf -sDEVICE = pdfwrite -dFILTERIMAGE -dFILTERTEXT input.pdf

Poniższy obraz ilustruje wyniki:


Górny rząd, od lewej: usunięto cały „tekst”; wszystkie „obrazy” zostały usunięte; wszystkie „wektory” usunięte. Dolny rząd, od lewej: zachowano tylko „tekst”; zachowano tylko „obrazy”; zachowano tylko „wektory”.
Górny rząd, od lewej: usunięto cały „tekst”;  wszystkie „obrazy” zostały usunięte;  wszystkie „wektory” usunięte.  Dolny rząd, od lewej: zachowano tylko „tekst”;  zachowano tylko „obrazy”;  zachowano tylko „wektory”.


Kurt Pfeifle
źródło
2

Choć @Rinzwind odpowiedź jest Right Thing , chciałbym tylko, aby skomentować rozwiązanie „połowie drogi”. Zwykle można znacznie zmniejszyć rozmiar obrazów za pomocą ghostscript z

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen \
   -dNOPAUSE -dQUIET -dBATCH -sOutputFile=small.pdf original.pdf

... to jest naprawdę przydatne do korekty. Strona podręcznika do pisania PDF jest tutaj .

Rmano
źródło
@KurtPfeifle /screenustawi (między innymi) rozdzielczość obrazów bitmapowych na 72dpi. Tak więc, jeśli masz obrazy w mniejszym DPI, może to zwiększyć rozmiar pliku. To dlatego użyłem słowa „normalnie” (w znaczeniu „nie zawsze, ale dość często”). Możesz głosować dowolnie.
Rmano
Uruchom komendę: for s in screen default ; do gs -o /dev/null -sDEVICE=pdfwrite -dPDFSETTINGS=/${s} -c "currentpagedevice {exch ==only ( ) print === } forall" | sort | tee ghostscript---pdfwrite-PDFSETTINGS-${s}--pagedevice-settings.txt; done. Wytworzy dwa pliki tekstowe, które można porównać za pomocą sdiff -sbB $[file1}.txt ${file2}.txt. Teraz znasz dokładnie i całkowicie wszystkie różne ustawienia wprowadzone przez -dPDFSETTINGS=/screen!
Kurt Pfeifle
Gotowy. Nadal nie widzę, która opcja może dać większy plik /screenniż w /default--- 72dpi kontra 150dpi, zoptymalizowany, odrzuć podgląd EPS ... ale hej, nie jest to duży problem. Ludzie będą testować i wybierać lepsze rozwiązanie.
Rmano
Przepraszam - może teraz muszę przeprosić za bezczelność mojego pierwszego zdania. Szczerze mówiąc, wydaje mi się, że po prostu pamiętam z moich poprzednich badań (kilka lat temu), które /screendały naprawdę złe wyniki. Być może moja pamięć zawodzi, albo ją pomieszałem /epub. Polecenie, które ci dałem, pochodziło z pamięci, ponieważ byłem całkiem pewien, że pokaże, o co mi chodzi. Teraz ponownie go uruchomiłem, nie widzę już tego, czego się spodziewałem: bardziej rozbudowane testy przeprowadziłem kilka lat temu. Następnie wiele czcionek (CID? / CFF?) Otrzymało zrasteryzowane, powiększające się rozmiary wynikowych plików PDF. Muszę ponownie odwiedzić tę kwestię, gdy będę miał więcej czasu ... :-)
Kurt Pfeifle
0

Możesz użyć głównego edytora pdf, usunąć te obrazy i zapisać jako nowy plik pdf. Możesz pobrać go z centrum oprogramowania Ubuntu.

Sudheer
źródło
Właśnie go zainstalowałem, aby spróbować, ale nie widzę zautomatyzowanego sposobu, aby to zrobić. Biorąc pod uwagę, że jest to 500-stronicowy dokument, nie widzę tu ręcznego usuwania jako rozwiązania. Przegapiłem coś ?
Ornux
nie, niczego nie przegapiłeś. Myślałem, że obrazy są duże, więc chcesz je usunąć, nigdy nie myślałem o tak wielu obrazach. w każdym razie miłe pytanie.
Sudheer