जवाबों:
आप इसे pdfinfo
( poppler-utils
पैकेज में फेडोरा पर ) के साथ करने की कोशिश कर सकते हैं । pdfinfo
अपने शब्दकोश से पीडीएफ फाइल के बारे में जानकारी प्राप्त करता है, इसलिए यदि यह पाता है कि फाइल ठीक होनी चाहिए
for f in *.pdf; do
if ! pdfinfo "$f" &> /dev/null; then
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
पीडीएफ की जांच के लिए मेरी पसंद का उपकरण है qpdf
। 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
। इसके बाद '': OK '' के रिटर्न का स्टेटस qpdf
0 है (तो कोई त्रुटि नहीं)
-o -exec echo "{}": FAILED \; \)
गलतियाँ पाए जाने पर इसे निष्पादित किया जाता है: प्रिंट फ़ाइल नाम जिसके बाद ": FAILED"
qpdf
:qpdf
दोनों लिनक्स और विंडोज बायनेरिज़ पर उपलब्ध हैं: https://github.com/qpdf/qpdf/releases । आप इसे पाने के लिए अपनी पसंद के पैकेज मैनेजर का भी उपयोग कर सकते हैं। उदाहरण के लिए उबंटू पर आप कमांड के साथ ap का उपयोग करके qpdf स्थापित कर सकते हैं:
apt install qpdf
मुझे स्वयं एक उत्तर मिला:
for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done
त्रुटियों वाले पीडीएफ त्रुटियों को दिखाएंगे।
ls
: mywiki.wooledge.org/ParsingLs
find (1)
। :-)
उपयोग करने के सभी तरीके pdfinfo
या pdftotext
मेरे लिए काम नहीं किए हैं। वास्तव में वे मुझे झूठी सकारात्मकता देते रहे और कभी-कभी ऐसी फाइलें बनाई जिनकी मुझे जरूरत नहीं थी।
क्या काम किया था JHOVE ने ।
स्थापना:
उपरोक्त लिंक से जार स्थापित करें और इस आदेश के साथ अपने पाथ पर्यावरण चर को अपडेट करें:
echo "export PATH=\$PATH:/REPLACE_WITH/YOUR/PATH_TO/jhove/" >> ~/.bash_profile
के साथ प्रत्येक टर्मिनल को ताज़ा करें
source ~/.bash_profile
और आप इसे विस्तृत प्रणाली का उपयोग शुरू करने के लिए अच्छा कर रहे हैं।
मूल उपयोग:
jhove -m pdf-hul someFile.pdf
आपको पीडीएफ़ के बारे में बहुत सारी जानकारी मिल जाएगी - अधिकांश लोगों की ज़रूरत से ज़्यादा।
बैश वन-लाइनर:
बस रिटर्न valid
या invalid
:
if [[ $(jhove -m pdf-hul someFile.pdf | grep -a "Status:") == *"Well-Formed and valid"* ]]; then echo "valid"; else echo "invalid"; fi;
ध्यान दें कि यह मैक ओएस एक्स पर चलाया गया था, लेकिन मुझे लगता है कि यह किसी भी यूनिक्स आधारित बैश वातावरण के साथ काम करता है।