Mam wiele plików PDF w jednym folderze.
Czy można sprawdzić, czy jeden lub więcej plików jest uszkodzonych (zero stron lub niedokończone pobieranie) za pomocą wiersza poleceń, bez konieczności otwierania ich jeden po drugim?
Być może uruchomienie pdfinfo
(tutaj w Fedorze w poppler-utils
pakiecie) daje wskazówkę?
Większość informacji na temat pliku PDF znajduje się na końcu w słowniku, więc jeśli go znajdzie, powinno być OK. Zrobiłbym coś takiego:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfo
czypdftotext
...To jest mój skrypt
źródło
Moim wybranym narzędziem do sprawdzania plików PDF jest
qpdf
.qpdf
ma--check
argument, który dobrze sprawdza się w wyszukiwaniu problemów w plikach PDF.Sprawdź pojedynczy plik PDF za pomocą
qpdf
:Sprawdź wszystkie pliki PDF w katalogu za pomocą
qpdf
:Objaśnienie polecenia:
find ./directory_to_scan/ -type f -iname '*.pdf'
Znajdź wszystkie pliki z rozszerzeniem „.pdf”-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Wykonajqpdf
dla każdego znalezionego pliku i potokuj wszystkie dane wyjściowe do/dev/null
. Wydrukuj także nazwę pliku, a po nim „: OK”, jeśli zwracany statusqpdf
to 0 (tzn. Brak błędów)-o -exec echo "{}": FAILED \; \)
Wykonuje się to, jeśli zostaną znalezione błędy: Wydrukuj nazwę pliku, a następnie „: AWARIA”Gdzie zdobyć
qpdf
:qpdf
ma pliki binarne dla systemu Linux i Windows dostępne na stronie : https://github.com/qpdf/qpdf/releases . Możesz także użyć swojego menedżera pakietów, aby go zdobyć. Na przykład na Ubuntu możesz zainstalować qpdf za pomocą apt z poleceniem:źródło
qpdf --check
wykrywa jednak wielokrotnie zdefiniowanych metadanych, które są niepoprawne, ponieważ są obsługiwane w różny sposób przez różne narzędzia. Zgłosiłem błąd . Inne narzędzia, takie jakpdfinfo
ipdftk
nie, ale nie twierdzą, że sprawdzają strukturę PDF.Dostałem odpowiedź:
Pliki PDF z błędami będą wyświetlać błędy.
źródło
ls
: mywiki.wooledge.org/ParsingLsfind (1)
. :-)Wszystkie metody wykorzystujące
pdfinfo
lubpdftotext
nie działały dla mnie. W rzeczywistości ciągle podawali mi fałszywe wyniki i czasami tworzyli pliki, których nie potrzebowałem.To, co zadziałało, to JHOVE .
Instalacja:
Zainstaluj słoik z powyższego łącza i zaktualizuj zmienną środowiskową PATH za pomocą tego polecenia:
Odśwież każdy terminal za pomocą
source ~/.bash_profile
i możesz zacząć korzystać z niego w całym systemie.Podstawowe użycie:
Otrzymasz wiele informacji o pliku pdf - więcej niż większość osób prawdopodobnie potrzebuje.
Bash One-Liner:
Zwraca
valid
lubinvalid
:Zauważ, że to zostało uruchomione na Mac OS X, ale zakładam, że działa tak samo z każdym środowiskiem Bash opartym na Uniksie.
źródło