Câu trả lời:
Có lẽ việc chạy pdfinfo
(ở đây trên Fedora trong poppler-utils
gó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
pdfinfo
hay 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
. qpdf
có 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 qpdf
cho 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ề qpdf
là 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
:qpdf
có 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 pdfinfo
hoặc pdftotext
khô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_profile
và 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ề valid
hoặ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.