Я не уверен, что это 100% решение, но я придумал следующий сценарий, который должен помочь вам, если не весь путь, пройти большую часть пути (я не прошел спецификацию). каталог, в котором есть все PDF-файлы (он будет искать подкаталоги).
#! /bin/bash
if [[ ! "$#" = "1" ]]
then
echo "Usage: $0 /path/to/PDFDirectory"
exit 1
fi
PDFDIRECTORY="$1"
while IFS= read -r -d $'\0' FILE; do
PDFFONTS_OUT="$(pdffonts "$FILE" 2>/dev/null)"
RET_PDFFONTS="$?"
FONTS="$(( $(echo "$PDFFONTS_OUT" | wc -l) - 2 ))"
if [[ ! "$RET_PDFFONTS" = "0" ]]
then
READ_ERROR=1
echo "Error while reading $FILE. Skipping..."
continue
fi
if [[ "$FONTS" = "0" ]]
then
echo "NOT SEARCHABLE: $FILE"
else
echo "SEARCHABLE: $FILE"
fi
done < <(find "$PDFDIRECTORY" -type f -name '*.pdf' -print0)
echo "Done."
if [[ "$READ_ERROR" = "1" ]]
then
echo "There were some errors."
fi
Это работает, ища количество шрифтов, указанных в каждом PDF. Если файл не имеет каких-либо шрифтов, предполагается, что он состоит только из изображения. (Это может привести к сбоям в файлах, защищенных паролем, я понятия не имею, проверять не нужно). Если есть что-то, что можно искать, и что-то, например, изображение, это не сработает, но, вероятно, будет полезно отделить отсканированные изображения с документами в контейнере PDF от "настоящих" PDF.
Конечно, вы можете закомментировать часть цикла if-then-else, которая не применяется, если вы хотите распечатать только те файлы, которые не доступны для поиска.