Відповіді:
Можливо, біг pdfinfo
(тут, на Fedora в poppler-utils
пакет) дає підказку?
Більша частина інформації про PDF-файл знаходиться у словнику, тому, якщо вона знайде її, вона повинна бути нормальною. Я б зробив щось подібне:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfo
або pdftotext
...
Це мій сценарій
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
Я отримав відповідь:
for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done
PDF-файли з помилками показуватимуть помилки.
ls
: mywiki.wooledge.org/ParsingLs
find (1)
. :-)
Всі методи використання pdfinfo
або pdftotext
не працювали для мене. Насправді вони продовжували давати мені помилкові спрацьовування, а іноді створювали файли, які мені не потрібні.
Була робота JHOVE .
Встановлення:
Встановіть банку з вищезгаданого посилання та оновіть змінну середовища PATH за допомогою цієї команди:
echo "export PATH=\$PATH:/REPLACE_WITH/YOUR/PATH_TO/jhove/" >> ~/.bash_profile
Оновіть кожен термінал за допомогою source ~/.bash_profile
і ви добре, щоб почати використовувати її в системі.
Базове використання:
jhove -m pdf-hul someFile.pdf
Ви отримаєте багато інформації про PDF - більше, ніж більшість людей, можливо, потребують.
Bash One-Liner:
Просто повертається valid
або invalid
:
if [[ $(jhove -m pdf-hul someFile.pdf | grep -a "Status:") == *"Well-Formed and valid"* ]]; then echo "valid"; else echo "invalid"; fi;
Зверніть увагу, що це було запущено на Mac OS X, але я припускаю, що він працює так само з будь-яким середовищем, що базується на Unix.
Моїм інструментом для перевірки PDF-файлів є qpdf
. qpdf
має --check
аргумент, що добре знаходить проблеми в PDF-файлах.
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 \; \)
Пояснення команди:
find ./directory_to_scan/ -type f -iname '*.pdf'
Знайдіть всі файли з розширенням ".pdf"
-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Виконати qpdf
для кожного знайденого файлу і для виведення всіх вихідних даних /dev/null
. Також можна надрукувати назву файлу, а потім кнопку ": OK", якщо повернути статус qpdf
0 (тобто без помилок)
-o -exec echo "{}": FAILED \; \)
Це виконується, якщо знайдено помилки: Друк імені файлу, а потім ": FAILED"
qpdf
: qpdf
у програмі Linux і Windows доступні: https://github.com/qpdf/qpdf/releases . Ви також можете скористатися вашим менеджером пакетів, щоб отримати його. Наприклад, на Ubuntu можна встановити qpdf за допомогою команди apt:
apt install qpdf