Antworten:
Vielleicht gibt das Ausführen pdfinfo(hier auf Fedora im poppler-utilsPaket) einen Hinweis?
Die meisten Informationen zu einer PDF-Datei befinden sich am Ende im Wörterbuch. Wenn es also gefunden wird, sollte es in Ordnung sein. Ich würde etwas machen wie:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfooder pdftotext...
Das ist mein Drehbuch
find . -iname '*.pdf' | while read -r f
do
if pdftotext "$f" &> /dev/null; then
echo "$f" was ok;
else
mv "$f" "$f.broken";
echo "$f" is broken;
fi;
done
Mein bevorzugtes Werkzeug zum Überprüfen von PDFs ist qpdf. qpdfhat ein --checkArgument, das sich gut dazu eignet, Probleme in PDFs zu finden.
qpdf:qpdf --check test_file.pdf
qpdf:find ./directory_to_scan/ -type f -iname '*.pdf' \( -exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \; -o -exec echo "{}": FAILED \; \)
Befehlserklärung:
find ./directory_to_scan/ -type f -iname '*.pdf'
Finde alle Dateien mit der Endung '.pdf'
-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Führen Sie qpdffür jede gefundene Datei die entsprechende Anweisung aus und leiten Sie alle Ausgaben an /dev/null. Gib auch den Dateinamen gefolgt von ': OK' aus, wenn der Rückgabestatus qpdf0 ist (dh keine Fehler)
-o -exec echo "{}": FAILED \; \) Dies wird ausgeführt, wenn Fehler gefunden werden: Drucke Dateiname gefolgt von ": FAILED"
qpdf:qpdfDie Linux- und Windows-Binärdateien sind verfügbar unter: https://github.com/qpdf/qpdf/releases . Sie können auch den Paketmanager Ihrer Wahl verwenden, um es zu erhalten. Unter Ubuntu können Sie zum Beispiel qpdf mit dem Befehl apt installieren:
apt install qpdf
qpdf --checkjedoch keine mehrfach definierten Metadaten erkannt, die nicht korrekt sind, da sie von verschiedenen Tools unterschiedlich gehandhabt werden. Ich habe einen Fehler gemeldet . Andere Tools wie pdfinfound pdftktun dies auch nicht, sie erheben jedoch keinen Anspruch darauf, die PDF-Struktur zu überprüfen.
Ich habe mir eine antwort geholt:
for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done
Bei fehlerhaften PDFs werden Fehler angezeigt.
ls: mywiki.wooledge.org/ParsingLs
find (1). :-)
Alle Methoden mit pdfinfooder pdftotexthaben bei mir nicht funktioniert. Tatsächlich gaben sie mir immer wieder Fehlalarme und erstellten manchmal Dateien, die ich nicht brauchte.
Was funktionierte, war JHOVE .
Installation:
Installieren Sie die JAR-Datei über den obigen Link und aktualisieren Sie Ihre PATH-Umgebungsvariable mit dem folgenden Befehl:
echo "export PATH=\$PATH:/REPLACE_WITH/YOUR/PATH_TO/jhove/" >> ~/.bash_profile
Aktualisieren Sie jedes Terminal mit
source ~/.bash_profileund Sie können es systemweit verwenden.
Grundsätzliche Verwendung:
jhove -m pdf-hul someFile.pdf
Sie werden eine Menge Informationen über das PDF erhalten - mehr als die meisten Leute wahrscheinlich brauchen.
Bash One-Liner:
Einfach zurücksenden validoder invalid:
if [[ $(jhove -m pdf-hul someFile.pdf | grep -a "Status:") == *"Well-Formed and valid"* ]]; then echo "valid"; else echo "invalid"; fi;
Beachten Sie, dass dies unter Mac OS X ausgeführt wurde, aber ich gehe davon aus, dass es in jeder Unix-basierten Bash-Umgebung gleich funktioniert.