লিনাক্সের কমান্ড লাইন ব্যবহার করে পিডিএফ ফাইলগুলি দূষিত হয়েছে কিনা তা পরীক্ষা করুন


16

আমার এক ফোল্ডারে অনেকগুলি পিডিএফ ফাইল রয়েছে।

এক বা একাধিক ফাইলগুলি একের পর এক খোলার দরকার না রেখে কমান্ড লাইনটি ব্যবহার করে (শূন্য পৃষ্ঠাগুলি, বা অসমাপ্ত ডাউনলোডগুলি) ক্ষতিগ্রস্থ হয়েছে কিনা তা পরীক্ষা করা সম্ভব?

উত্তর:


20

সম্ভবত চলমান pdfinfo( poppler-utilsপ্যাকেজের ফেডোরায় এখানে ) একটি সূত্র দেয়?

পিডিএফ ফাইলের বেশিরভাগ তথ্যই অভিধানে শেষ থাকে তাই এটি যদি এটি খুঁজে পায় তবে তা ঠিক করা উচিত। আমি এরকম কিছু করব:

for f in *.pdf; do
  if pdfinfo "$f" > /dev/null; then
    : Nothing
  else
    echo "$f" is broken
  fi
done

6
আমি পিডিফিনফোর পিডিফোটোটেক্সট প্রতিস্থাপন করার পরামর্শ দেব। এই ভাবে প্রতিটি পৃষ্ঠায় সমস্ত পাঠ্য পরীক্ষা করা হবে। এবং> জিটি অক্ষরটি &> হওয়া উচিত যাতে সমস্ত ত্রুটি বার্তাগুলি প্রদর্শিত না হয়।
schoetbi

আমার সমস্ত পিডিএফ ভাঙ্গা হিসাবে চিহ্নিত করা হয়েছে। সেগুলি কয়েকশ গিগাবাইট। আমি স্রেফ তৈরি করেছেন এমনগুলি সহ। ব্যবহার করা হোক pdfinfoবা না pdftotext...
প্যাট্রিকটি

13

এটি আমার লিপি

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

স্পষ্ট করার জন্য: এই স্ক্রিপ্টটি পিডিএফ ফাইলগুলির নাম পরিবর্তন করে যা 'ভাঙা' হিসাবে চিহ্নিত করা হয় .pdf এক্সটেনশনে ব্রোকেন যুক্ত করে broken
প্যাট্রিকটি

5

পিডিএফ চেক করার জন্য আমার পছন্দসই সরঞ্জামটি qpdfqpdfএকটি --checkযুক্তি রয়েছে যা পিডিএজে সমস্যাগুলি খুঁজে পেতে ভাল করে does

এর সাথে একটি পিডিএফ পরীক্ষা করুন 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। ': ঠিক আছে' এর পরে ফাইলের নামও মুদ্রণ করুন যদি এর রিটার্নের স্ট্যাটাস qpdf0 হয় (যেমন কোনও ত্রুটি নেই)

  • -o -exec echo "{}": FAILED \; \) ত্রুটিগুলি পাওয়া গেলে এটি কার্যকর করা হয়: ": FAILED" এর পরে ফাইলের নাম মুদ্রণ করুন


কোথায় পাবেন qpdf:

qpdfলিনাক্স এবং উইন্ডোজ উভয়েরই বাইনারি রয়েছে: https://github.com/qpdf/qpdf/releases এ । এটি পেতে আপনার পছন্দসই প্যাকেজ ম্যানেজারটিও ব্যবহার করতে পারেন। উদাহরণস্বরূপ উবুন্টুতে আপনি কমান্ড সহ অ্যাপটি ব্যবহার করে কিউপিডিএফ ইনস্টল করতে পারেন:

apt install qpdf

তবে, qpdf --checkগুণিত সংজ্ঞায়িত মেটাডেটা সনাক্ত করে না, যা বিভিন্ন সরঞ্জাম দ্বারা আলাদাভাবে হ্যান্ডেল করার কারণে এটি ভুল। আমি একটি বাগ রিপোর্ট করেছি । অন্যান্য সরঞ্জাম যেমন pdfinfoএবং pdftkহয় না তবে তারা পিডিএফ কাঠামোটি চেক করার দাবি করে না।
ভিঙ্ক 17

4

আমি নিজেই একটি উত্তর পেয়েছি:

for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done

ত্রুটিযুক্ত পিডিএফগুলি ত্রুটিগুলি দেখায়।


4
আউটপুটটি পুনরাবৃত্তি করা খারাপ ধারণা (এবং সত্যই কখনই প্রয়োজন হয় না) ls: mywiki.wooledge.org/ParsingLs
slhck

2
@ এসএলএইচকে: এটি দিয়ে পরিচালনা করা উচিত find (1)। :-)
মনিকা পুনরায় ইনস্টল করুন - এম। শ্রাইডার

2

সমস্ত পদ্ধতি ব্যবহার করে pdfinfoবা pdftotextআমার পক্ষে কাজ করে নি। আসলে তারা আমাকে মিথ্যা ধনাত্মক দিক দিয়ে চলেছে এবং কখনও কখনও এমন ফাইল তৈরি করে যা আমার প্রয়োজন হয় না।

কাজটি কী ছিল JHOVE

স্থাপন:

উপরের লিঙ্ক থেকে জারটি ইনস্টল করুন এবং এই কমান্ডটি দিয়ে আপনার PATH পরিবেশ পরিবর্তনশীল আপডেট করুন:

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;

নোট করুন যে এটি ম্যাক ওএস এক্সে চালিত হয়েছিল তবে আমি ধরে নিয়েছি এটি কোনও ইউনিক্স ভিত্তিক বাশ পরিবেশের সাথে একই কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.