Jeden z naszych dostawców zaczął dodawać niepotrzebnie ogromny obraz do ostatniej strony plików PDF, które od nich otrzymujemy. Muszę to wyciąć. Mamy ich jednak setki, więc wprowadzanie ręczne jest niedopuszczalne. Jakie są najlepsze sposoby wyodrębnienia, a następnie usunięcia (najlepiej najpierw, potem drugiego; nadal muszę potwierdzić za pomocą rozmiaru pliku, że nie usuwam jednego, który nie ma obrazu) ostatniej strony pliku PDF automatycznie? System operacyjny to Linux.
Mogę go wyodrębnić za pomocą ghostscript, z czymś podobnym do gs -dFirstPage=5 -dLastPage=5
, ale muszę to zautomatyzować, nie mogę przejść i ręcznie dowiedzieć się, jaka jest liczba ostatniej strony.
Jakieś pomysły?
Edycja: Aby to wyjaśnić, chcę po prostu podzielić / usunąć ostatnią stronę. Nie obraz w nim, akcyza ostatni okres strony.
pdftk
- jestem przekonany, że można go ogólnie zastosować do tego rodzaju zadań.Odpowiedzi:
Jak już skomentował @Daniel Andersson, można to łatwo zrobić za pomocą
pdftk
:Nie wiem jednak, czy da się to zrobić za pomocą jednego połączenia z pdftk ...
Edycja : możesz połączyć to z odpowiedzią thanosk i użyć (w bash):
kiedy już wyodrębniłeś ostatnią stronę do zmiennej
$last
.źródło
Aby jeszcze bardziej ulepszyć odpowiedź @ eldering, pdftk w wersji 1.45 i nowszych ma możliwość odwoływania się do stron w odwrotnej kolejności, przygotowując małą literę r do numeru strony. Ostatnia strona w pliku PDF to r1, strona przedostatnia to r2 itp.
Na przykład pojedyncze wywołanie pdftk:
usunie ostatnią stronę z input.pdf - dane wejściowe powinny mieć co najmniej dwie strony.
Aby wyodrębnić tylko ostatnią stronę pliku PDF w celu przetestowania jego rozmiaru pliku, uruchom:
Pdftk jest dostępny w systemie Linux. Wiele dystrybucji ma pliki binarne, które można zainstalować. Należy jednak upewnić się, że jest to wersja 1.45 lub nowsza. Jeśli nie, możesz zbudować pdftk z kodu źródłowego.
źródło
pdfinfo poda rozmiar rzeczywistego pliku pdf, a pdfimages da indeks obrazów we wspomnianym pliku pdf. Możesz napisać skrypt w formularzu
powinien zwrócić, jeśli określony plik ma obraz na ostatniej stronie. Jeśli tak, możesz wykonać dowolną manipulację.
źródło
Oto rozwiązanie wykorzystujące pdfjam zamiast pdftk:
Gdzie pierwszym argumentem jest plik do przycięcia, a drugim argumentem ilość stron do przycięcia (domyślnie 1).
źródło
Jednym rozwiązaniem liniowym byłoby użycie
find
razempdftk
:UWAGA : przycięte pliki są przechowywane w tym przykładzie w podkatalogu wywoływanym w
cut
celu zachowania oryginalnej nazwy pliku, ponieważpdftk
nie pozwala na zastąpienie plików wejściowych.źródło