답변:
아마도 패키지의 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
...
PDF 확인을위한 나의 선택 도구는 qpdf
입니다. PDF에서 문제를 찾는 데 도움 qpdf
이되는 --check
주장이 있습니다.
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
. 또한 반환 상태 qpdf
가 0 인 경우 (예 : 오류 없음) 파일 이름 뒤에 ': OK'를 인쇄합니다.
-o -exec echo "{}": FAILED \; \)
오류가 발견되면 실행됩니다. 파일 이름 인쇄 후 ": FAILED"
qpdf
:qpdf
https://github.com/qpdf/qpdf/releases 에서 Linux 및 Windows 바이너리를 모두 사용할 수 있습니다 . 선택한 패키지 관리자를 사용하여 얻을 수도 있습니다. 예를 들어 Ubuntu에서 다음 명령과 함께 apt를 사용하여 qpdf를 설치할 수 있습니다.
apt install qpdf
나는 나 자신에게 답을 얻었다.
for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done
오류가있는 PDF는 오류를 표시합니다.
ls
: mywiki.wooledge.org/ParsingLs
find (1)
. :-)
나를 사용 pdfinfo
하거나 사용 pdftotext
하지 않은 모든 방법 . 사실 그들은 계속 오탐 (false positive)을 받았고 때로는 필요하지 않은 파일을 만들었습니다.
일한 것은 JHOVE였습니다 .
설치:
위 링크에서 jar을 설치하고 다음 명령으로 PATH 환경 변수를 업데이트하십시오.
echo "export PATH=\$PATH:/REPLACE_WITH/YOUR/PATH_TO/jhove/" >> ~/.bash_profile
각 터미널을 새로 고치면
source ~/.bash_profile
시스템 전체에서 사용하는 것이 좋습니다.
기본 사용법 :
jhove -m pdf-hul someFile.pdf
대부분의 사람들이 필요로하는 것보다 더 많은 pdf에 대한 많은 정보를 얻을 수 있습니다.
배쉬 한 - 라이너 :
간단하게 반환 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 기반 Bash 환경과 동일하게 작동한다고 가정합니다.