Câu trả lời:
Có lẽ việc chạy pdfinfo(ở đây trên Fedora trong poppler-utilsgói) cho một manh mối?
Hầu hết các thông tin trên một tệp PDF đều có trong từ điển, vì vậy nếu tìm thấy nó thì nó sẽ ổn. Tôi sẽ làm một cái gì đó như:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfohay pdftotext...
Đây là kịch bản của tôi
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
Công cụ lựa chọn của tôi để kiểm tra các tệp PDF là qpdf. qpdfcó một --checkđối số không tốt để tìm các vấn đề trong các tệp 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 \; \)
Giải thích về Lệnh:
find ./directory_to_scan/ -type f -iname '*.pdf'
Tìm tất cả các tệp có phần mở rộng '.pdf'
-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Thực thi qpdfcho từng tập tin được tìm thấy và đường ống tất cả đầu ra /dev/null. Đồng thời in tên tệp theo sau ': OK' nếu trạng thái trả về qpdflà 0 (nghĩa là không có lỗi)
-o -exec echo "{}": FAILED \; \) Điều này được thực thi nếu tìm thấy lỗi: In tên tệp theo sau ": FAILED"
qpdf:qpdfcó cả nhị phân Linux và Windows có sẵn tại: https://github.com/qpdf/qpdf/release . Bạn cũng có thể sử dụng trình quản lý gói lựa chọn của mình để có được nó. Ví dụ: trên Ubuntu, bạn có thể cài đặt qpdf bằng lệnh apt:
apt install qpdf
Tôi đã có cho mình một câu trả lời:
for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done
Các tệp PDF có lỗi sẽ hiển thị lỗi.
ls: mywiki.wooledge.org/ParsingLs
find (1). :-)
Tất cả các phương pháp sử dụng pdfinfohoặc pdftotextkhông có hiệu quả đối với tôi. Trong thực tế, họ tiếp tục cho tôi những thông tin sai lệch và đôi khi tạo ra những tập tin mà tôi không cần.
Những gì đã làm việc là JHISE .
Cài đặt:
Cài đặt jar từ liên kết trên và cập nhật biến môi trường PATH của bạn bằng lệnh này:
echo "export PATH=\$PATH:/REPLACE_WITH/YOUR/PATH_TO/jhove/" >> ~/.bash_profile
Làm mới mỗi thiết bị đầu cuối với
source ~/.bash_profilevà bạn tốt để bắt đầu sử dụng hệ thống rộng.
Cách sử dụng cơ bản:
jhove -m pdf-hul someFile.pdf
Bạn sẽ nhận được rất nhiều thông tin về pdf - nhiều hơn hầu hết mọi người có thể cần.
Bash One-liner:
Đơn giản là trả về validhoặc invalid:
if [[ $(jhove -m pdf-hul someFile.pdf | grep -a "Status:") == *"Well-Formed and valid"* ]]; then echo "valid"; else echo "invalid"; fi;
Lưu ý rằng điều này đã được chạy trên Mac OS X nhưng tôi cho rằng nó hoạt động tương tự với bất kỳ môi trường Bash dựa trên Unix nào.