@ এন0 এনুফের পদক্ষেপ অনুসরণ করে, পিডিফিনফো সহ একটি নির্দিষ্ট ফোল্ডারে সমস্ত পিডিএফ চেক করতে এবং ব্যাগের স্ক্রিপ্ট লিখেছিলাম এবং সিপিডিএফ দিয়ে তা ঠেকানোর চেষ্টা হিসাবে ভাঙা হয়েছে:
@ECHO OFF
FOR %%f in (*.PDF) DO (
echo %%f
pdfinfo "%%f" 2>&1 | findstr /I "error" >nul 2>&1
if not errorlevel 1 (
echo "bad -> try to fix"
@cpdf -i %%f -o %%f_.pdf 2>NUL
mv %%f .\\bak\\%%f
) else (
REM echo good
)
)
@ECHO ON
বা বাশ স্ক্রিপ্টের মতো:
for file in $(find . -iname "*.pdf")
do
echo "$file"
pdfinfo "$file" 2>&1 | grep -i 'error' &> /dev/null
if [ $? == 0 ]; then
echo "broken -> try to fix"
cpdf -i "$file" -o "$file"_.pdf
fi
done
ভাঙা পিডিএফগুলি একটি সাবফোল্ডার-বক এ সরানো হবে এবং পুনরায় তৈরি পিডিএফগুলি প্রত্যয় _.pdf পাবে (যা নিখুঁত নয়, তবে আমার পক্ষে যথেষ্ট ভাল)। দ্রষ্টব্য: একটি পুনরায় তৈরি পিডিএফটিতে ত্রুটিগুলি কম থাকে এবং এটি নিয়মিত পিডিএফ দর্শকের সাথে দেখতে পারা উচিত। তবে এর অর্থ এই নয় যে আপনি আপনার সমস্ত সামগ্রী ফিরে পাবেন। অপরিশোধনযোগ্য সামগ্রী খালি পৃষ্ঠাগুলিতে নিয়ে যায়।
আমি এখানে @ ক্রাফটিদেবিলের পরামর্শ অনুসারে JHOVE (ওপেন সোর্স ফাইল ফর্ম্যাট সনাক্তকরণ, বৈধকরণ এবং চরিত্রায়ন সরঞ্জাম) এর সাথেও চেষ্টা করেছি: পিডিএফ ফাইলগুলি লিনাক্সের কমান্ড লাইন ব্যবহার করে দুর্নীতিগ্রস্থ হয়েছে কিনা এবং এখন এটিও একটি বৈধ পদ্ধতির বিষয়টি নিশ্চিত করতে পারে কিনা তা পরীক্ষা করে দেখুন। (প্রথমে আমার কম সাফল্য হয়েছিল। তবে আমি লক্ষ্য করেছি যে আমি JHOVE এর আউটপুট সঠিকভাবে পরিচালনা করিনি))
উভয় পদ্ধতির পরীক্ষা করতে আমি কোনও পাঠ্য সম্পাদক (পিডিএফ থেকে মুছে ফেলা স্ট্রিমস, তাই পৃষ্ঠাগুলি আমার পিডিএফ ভিউয়ারে রেন্ডার করতে ব্যর্থ হয়েছে, পিডিএফ ট্যাগ পরিবর্তন করেছেন, এবং কিছু বিট স্থানান্তরিত করেছেন) এলোমেলো অংশগুলি মুছে ফেলেছি এবং পরিবর্তন করেছি। ফলাফলটি: পিডিফিনফো এবং JHOV দুজনই ক্ষতিগ্রস্থ ফাইলগুলি সঠিকভাবে সনাক্ত করতে সক্ষম হয়েছে (কিছু ক্ষেত্রে JHOVE আরও সংবেদনশীল ছিল)।
এবং এখানে JHOV এর সমতুল্য স্ক্রিপ্ট:
@ECHO OFF
FOR %%f in (*.PDF) DO (
echo %%f
"C:\Program Files (x86)\JHOVE\jhove.bat" -m pdf-hul %%f | findstr /C:"Well-Formed and valid" >nul 2>&1
if not errorlevel 1 (
echo good
) else (
echo "bad -> try to fix"
@cpdf -i %%f -o %%f_.pdf 2>NUL
REM mv %%f .\\bak\\%%f
)
)
@ECHO ON