পিডিএফগুলির একগুচ্ছের শেষ পৃষ্ঠাটি সরিয়ে স্বয়ংক্রিয় করুন


1

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

উত্তর:


1

আমি এটি সুসংহত পিডিএফ কমান্ড লাইন সরঞ্জাম সম্প্রদায়ের রিলিজ ব্যবহার করে করেছি ।

আপনি নিজের থেকে পরে সংকলন করতে প্রাক-নির্মিত সরঞ্জাম বা উত্স কোডটি ডাউনলোড করতে পারেন , তবে পরবর্তীটি সংকলনের সময় ওসিএএমএল ইনস্টল করা প্রয়োজন। সুতরাং প্রাক-নির্মিত সরঞ্জামগুলি যেতে সহজতম উপায়। ডাউনলোড করা ডিস্ট্রিবিউশন ফাইল, যেমন সিপিডিএফ -বাইনারিস- মাস্টার.জিপ , লিনাক্স, ওএস এক্স / ম্যাকোস এবং উইন্ডোজের জন্য বাইনারি থাকে এবং আকারটি 5 এমবি ডলার

একবার ডাউনলোড এবং নিষ্কাশিত (দুবার ক্লিক .zip ফাইল) আপনি, যেমন, কপি করুন চাই ~ / ডাউনলোড / cpdf-বাইনেরিতে-মাস্টার / ওএসএক্স-ইন্টেল / cpdf একটি অবস্থান যে সংজ্ঞায়িত করা হয়েছে ফাইল, PATH এনভায়রনমেন্ট ভেরিয়েবল , যেমন /usr/local/bin/করতে এটি টার্মিনালের কমান্ড লাইনে বিশ্বব্যাপী উপলব্ধ করুন। যদি তা না হয় PATHতবে আপনাকে এক্সিকিউটেবলের জন্য পুরোপুরি যোগ্য প্যাথনামটি ব্যবহার করতে হবে cpdfবা ./cpdfএটি যদি বর্তমান কার্যনির্বাহী ডিরেক্টরিতে থাকে ( pwd)। টার্মিনাল এ টাইপ echo $PATHকরুন PATH

সিনট্যাক্স যখন PDF ফাইল 3 বা আরো পৃষ্ঠা থাকে শেষ পৃষ্ঠা সরানোর জন্য:

cpdf in.pdf 1-~2 -o out.pdf

সিনট্যাক্স যখন PDF ফাইল 2 পৃষ্ঠা থাকে শেষ পৃষ্ঠা সরানোর জন্য:

cpdf in.pdf 1 -o out.pdf

কারণ cpdfআসল ফাইলটি ( in.pdf ) পড়ে এবং একটি নতুন ফাইলে ( out.pdf ) লিখেছে out.pdf ফাইলের নামটি in.pdf ফাইলের মতো একই স্থানে সংরক্ষণ করা থাকলে বা এটি অন্য কোনও জায়গায় সংরক্ষণ করা প্রয়োজন different একই সঙ্গে in.pdf যেমন ফাইলের নাম out.pdf ফাইলের নাম, বা যাই হোক না কেন out.pdf ফাইলের নাম আপনি চান।

নীচে, আমি cpdfপিডিএফ ফাইলের শেষ পৃষ্ঠাটি মুছে ফেলার জন্য দুটি বা তার বেশি পৃষ্ঠা রয়েছে বলে ধরে রেখে অটোমেশনের দুটি উদাহরণ দেখাব । এক একটি ব্যবহার Automator কর্মপ্রবাহ হিসেবে পরিষেবা উপলব্ধ ফাইন্ডারে উপর সার্ভিস কনটেক্সট মেনু এবং অন্যান্য bash স্ক্রিপ্ট , টার্মিনাল ব্যবহার।


পরিষেবাদি প্রসঙ্গে মেনুতে ফাইন্ডারে একটি অটোমেটর পরিষেবা ওয়ার্কফ্লো উপলব্ধ:


Automator একটি নতুন তৈরি সেবা কর্মপ্রবাহ নীচে ছবিতে দেখানো সেটিংস ব্যবহার এবং কপি এবং পেস্ট করুন কোড ছবিটি নিচের রান শেল স্ক্রিপ্ট কর্ম এবং যেমন হিসাবে সংরক্ষণ করুন: পিডিএফ থেকে পাতা শেষ পাতা সরান

ব্যবহার করার জন্য পিডিএফ থেকে পাতা শেষ পাতা সরান , ইন ফাইন্ডারে আপনার কাছ থেকে শেষ পৃষ্ঠা মুছে ফেলার জন্য এবং তারপর নির্বাচন চান পিডিএফ ফাইল নির্বাচন পিডিএফ থেকে পাতা শেষ পাতা সরান থেকে কনটেক্সট মেনু মাধ্যমে ডান-ক্লিক করুন অথবা নিয়ন্ত্রণ-ক্লিক , বা থেকে ফাইন্ডারে > সার্ভিস > সরান পিডিএফ থেকে শেষ পৃষ্ঠা

অটোমেটার পরিষেবা কর্মপ্রবাহ


for f in "$@"; do
        # Get Page Count.
    p="$(/usr/local/bin/cpdf -info "$f" | awk '/Pages:/{print $2}')"
        # Get file extension.
    ext="${f##*.}"
        # Get filename without extension.
    fn="${f%.*}"
        # Rename original file to "filename (original).pdf".
        # Use '-n' to not overwrite an existing file.
    mv -n "$f" "${fn} (original).${ext}"
        # If page count is greater than 2, set 'p' to '3' as any
        # PDF with more than 2 pages the command will be the same.
    if [[ $p -gt 2 ]]; then
        p="3"
    fi
    case "$p" in
        3)
                # PDF file has 3 or more pages.
            /usr/local/bin/cpdf "${fn} (original).${ext}" 1-~2 -o "$f" 
            ;;
        2)
                # PDF file has 2 pages.
            /usr/local/bin/cpdf "${fn} (original).${ext}" 1 -o "$f"
            ;;
        1)
                # PDF file has 1 page. Make a copy to the
                # original name for consistency of output.
                # Use '-n' to not overwrite an existing file.
            cp -n "${fn} (original).${ext}" "$f"
            ;;      
    esac
        # If you don't want to keep the original
        # file, remove '#' from the next line.
    # rm "${fn} (original).${ext}"
done

মনে রাখবেন যে, PATHএকটি পাস চালান শেল স্ক্রিপ্ট কর্ম মধ্যে Automator হয়, /usr/bin:/bin:/usr/sbin:/sbin। সুতরাং উপরের কোডটি এক্সিকিউটেবলের জন্য পুরোপুরি যোগ্য প্যাথনামটি ব্যবহার করছে , যেখানে আমি এটি রেখেছি যাতে কেবলমাত্র তার নাম ব্যবহারের মাধ্যমে টার্মিনালে উপলব্ধ থাকতে পারে ।cpdf /usr/local/bin/cpdfcpdf

আরও মনে রাখবেন যে আপনি যদি মূল ফাইলগুলি রাখতে চান না, তবে কোডের শেষ লাইনের ঠিক উপরে কমান্ডটি আপত্তিহীন ( #সামনে থেকে সরিয়ে ফেলুন ) করুন ।# rm "${fn} (original).${ext}" done



হিসেবে bash স্ক্রিপ্ট টার্মিনাল ব্যবহার করার জন্য:


নিম্নলিখিত পদ্ধতিতে bash স্ক্রিপ্ট তৈরি করুন :

টার্মিনালে:

touch rlpfpdf
open rlpfpdf

অনুলিপি কোড ব্লক , দিয়ে শুরু #!/bin/bash, খোলা নীচে rlpfpdfডকুমেন্ট এবং তারপর সংরক্ষণ করুন।

টার্মিনালে ফিরে:

করুন স্ক্রিপ্ট এক্সিকিউটেবল:

chmod u+x rlpfpdf

এখন rlpfpdf স্ক্রিপ্টটি সরান , যেমন:/usr/local/bin/

sudo mv rlpfpdf /usr/local/bin/

তারপরে আপনি ডিরেক্টরিটি cd ...এমন একটি ডিরেক্টরিতে পরিবর্তন করতে পারেন যার পিডিএফ ফাইল রয়েছে যা আপনি শেষ পৃষ্ঠাটি মুছতে চান এবং তারপরে কেবল টাইপ করে rlpfpdfটিপুন enter

আসল ফাইলগুলি " ফাইলের নাম (মূল) .পিডিএফ " এ সরানো হবে এবং নতুন তৈরি পিডিএফ ফাইলটি শেষ পৃষ্ঠাটি সান করেছে, যদি 2 বা ততোধিক পৃষ্ঠা হয় তবে আসল filename.pdfনামটি থাকবে।


#!/bin/bash

for f in *.pdf *.PDF; do
    if [[ -f $f ]]; then
            # Get Page Count.
        p="$(cpdf -info "$f" | awk '/Pages:/{print $2}')"
            # Get file extension.
        ext="${f##*.}"
            # Get filename without extension.
        fn="${f%.*}"
            # Rename original file to "filename (original).pdf".
            # Use '-n' to not overwrite an existing file.
        mv -n "$f" "${fn} (original).${ext}"
            # If page count is greater than 2, set 'p' to '3' as any
            # PDF with more than 2 pages the command will be the same.
        if [[ $p -gt 2 ]]; then
            p="3"
        fi
        case "$p" in
            3)
                    # PDF file has 3 or more pages.
                cpdf "${fn} (original).${ext}" 1-~2 -o "$f" 
                ;;
            2)
                    # PDF file has 2 pages.
                cpdf "${fn} (original).${ext}" 1 -o "$f"
                ;;
            1)
                    # PDF file has 1 page. Make a copy to the
                    # original name for consistency of output.
                    # Use '-n' to not overwrite an existing file.
                cp -n "${fn} (original).${ext}" "$f"
                ;;      
        esac
            # If you don't want to keep the original
            #  file, remove '#' from the next line.
        # rm "${fn} (original).${ext}"
    fi
done

নোট করুন যে উপরের কোডটি cpdf এক্সিকিউটেবলকে পরিবেশের ভেরিয়েবলের মধ্যে থাকা একটি ডিরেক্টরিতে অনুমান করে :PATH /usr/local/bin/

আরও মনে রাখবেন যে আপনি যদি মূল ফাইলগুলি রাখতে চান না, তবে কোডের শেষ লাইনের ঠিক উপরে কমান্ডটি আপত্তিহীন ( #সামনে থেকে সরিয়ে ফেলুন ) করুন ।# rm "${fn} (original).${ext}" done


আমার সবেমাত্র 1 সাধারণ তদন্ত রয়েছে। আমি শেষের পরিবর্তে প্রথম পৃষ্ঠাটি সরাতে কোড ব্লককে কীভাবে সংশোধন করতে পারি?
আগ্রহী

@ ইন্টারেস্টগ্রিয়ার্নার্নার, ডাউনলোড করা বিতরণ ফাইলের মধ্যে, যেমন সিপিডিএফ-বিিনিয়ারিস-মাস্টার.জিপ , সিপিডিফম্যানুয়াল.পিডিএফ ফাইল রয়েছে এবং "1.2 ইনপুট রেঞ্জ" এর অধীনে পৃষ্ঠা 2 থেকে শুরু করে এটি এটি আলোচনা করেছে। প্রথম পৃষ্ঠার মুছে ফেলার জন্য সিনট্যাক্স হল কোড আপনার ওপি আমার উত্তর দেওয়া শেষ পৃষ্ঠা সরানোর নির্দিষ্ট হয় এবং আপনি সহজভাবে ব্যবহার করতে পারবেন না স্থানে বা মধ্যে স্ক্রিপ্ট যেমন লেখা নয়। শর্তগুলির সাথে মেলে যাবার জন্য আপনাকে এটি পুনরুদ্ধার করতে হবে। আপনি যদি নতুন প্রশ্ন পোস্ট করেন তবে আমি এমন একটি স্ক্রিপ্ট পোস্ট করব যা শর্তের পক্ষে উপযুক্ত। cpdf in.pdf 2-end out.pdf2-end1-~21
ব্যবহারকারী 3439894


আরে, @ ব্যবহারকারী 3439894, খুব সুন্দর প্রতিক্রিয়া। বাক্য গঠনটি cpdf in.pdf 1-~2 -o out.pdfএখন 2-পৃষ্ঠার ডকুমেন্টগুলির জন্যও কাজ করে। আপনি যদি সেই অনুযায়ী আপনার উত্তরটি সম্পাদনা করতে পারেন তবে দুর্দান্ত হবে। এটি স্ক্রিপ্টকে অনেক সহজ করবে।
retrography
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.