मेरे पास एक फ़ोल्डर है जिसमें सैकड़ों PDF हैं, और मैं हर एक के अंतिम पृष्ठ को त्वरित तरीके से निकालना चाहूंगा। मैं अपने मैक को इस कार्य को कैसे करने दे सकता हूं? क्या मुझे ऐसा करने के लिए अतिरिक्त सॉफ़्टवेयर की आवश्यकता है?
मेरे पास एक फ़ोल्डर है जिसमें सैकड़ों PDF हैं, और मैं हर एक के अंतिम पृष्ठ को त्वरित तरीके से निकालना चाहूंगा। मैं अपने मैक को इस कार्य को कैसे करने दे सकता हूं? क्या मुझे ऐसा करने के लिए अतिरिक्त सॉफ़्टवेयर की आवश्यकता है?
जवाबों:
मैंने सुसंगत पीडीएफ कमांड लाइन टूल कम्युनिटी रिलीज़ का उपयोग करके ऐसा किया है ।
आप बाद में संकलित करने के लिए पूर्व-निर्मित उपकरण या स्रोत कोड डाउनलोड कर सकते हैं, हालांकि बाद में संकलन करते समय OCaml स्थापित करने की आवश्यकता होती है। तो पूर्व निर्मित उपकरण जाने का सबसे आसान तरीका है। डाउनलोड की गई वितरण फ़ाइल, उदाहरण के लिए cpdf-binaries-master.zip , में Linux, OS X / macOS और Windows के लिए बायनेरी और ~ 5 MB आकार में है।
एक बार डाउनलोड करने और निकाले जाने के बाद (.zip फ़ाइल को डबल-क्लिक करें), आप कॉपी करेंगे, जैसे ~ / डाउनलोड / cpdf-binaries-master / OSX-Intel / cpdf , फ़ाइल को उस स्थान पर फ़ाइल करें जो PATH
पर्यावरण चर में परिभाषित है , जैसे /usr/local/bin/
। टर्मिनल में कमांड लाइन पर इसे विश्व स्तर पर उपलब्ध कराएं। यदि यह PATH
तब नहीं है, तो आपको निष्पादन योग्य के लिए पूरी तरह से योग्य पथनाम का उपयोग करना होगा cpdf
या ./cpdf
यदि यह वर्तमान कार्यशील निर्देशिका ( pwd
) में है। टर्मिनल में, टाइप echo $PATH
करें PATH
।
पीडीएफ फाइल के 3 या अधिक पेज होने पर अंतिम पेज को हटाने का सिंटैक्स है:
cpdf in.pdf 1-~2 -o out.pdf
जब पीडीएफ फाइल में 2 पेज होते हैं तो आखिरी पेज को हटाने का सिंटैक्स है:
cpdf in.pdf 1 -o out.pdf
क्योंकि cpdf
मूल फ़ाइल (पढ़ता in.pdf ) और एक नई फ़ाइल (करने के लिए लिखते हैं out.pdf ) out.pdf फ़ाइल नाम अगर रूप में एक ही स्थान पर सहेजी अलग होने की जरूरत है in.pdf फ़ाइल, या एक अलग स्थान में सहेजें एक ही साथ in.pdf के रूप में फ़ाइल नाम out.pdf फ़ाइल नाम, या जो कुछ भी out.pdf फ़ाइल नाम आप चाहते हैं।
नीचे, मैं cpdf
पीडीएफ फाइल के अंतिम पृष्ठ को हटाने के लिए स्वचालन के दो उदाहरण दिखाऊंगा , यह मानते हुए कि इसके दो या अधिक पृष्ठ हैं। एक एक का उपयोग कर स्वचालक कार्यप्रवाह एक के रूप में सेवा में उपलब्ध खोजक पर सेवाएं संदर्भ मेनू और एक के रूप में अन्य bash
स्क्रिप्ट , टर्मिनल में उपयोग करने के लिए।
सेवा प्रसंग मेनू पर खोजक में उपलब्ध एक स्वचालित सेवा वर्कफ़्लो के रूप में:
ऑटोमेटर में नीचे दी गई इमेज में दिखाए गए सेटिंग्स का उपयोग करके एक नया सर्विस वर्कफ़्लो बनाएं और रन शेल स्क्रिप्ट एक्शन में इमेज के नीचे दिए गए कोड को कॉपी और पेस्ट करें और जैसे सेव करें: पीडीएफ से लास्ट पेज निकालें
खोजकर्ता से निकालें अंतिम पृष्ठ का उपयोग करने के लिए , खोजक में उन पीडीएफ फाइलों का चयन करें जिन्हें आप अंतिम पृष्ठ से हटाना चाहते हैं और फिर दाईं ओर क्लिक करें या नियंत्रण-क्लिक के माध्यम से संदर्भ मेनू से पीडीएफ से अंतिम पृष्ठ को निकालें , या खोजक > सेवा > निकालें से चुनें पीडीएफ से अंतिम पृष्ठ
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
एक रन शैल स्क्रिप्ट कार्रवाई पारित की गई है ,। तो कोड ऊपर उपयोग कर रहा है पूरी तरह से योग्य पथ नाम करने के लिए निष्पादन योग्य , के रूप में यह है कि जहां मैं इसे रखा इतनी के रूप में उपलब्ध में होना टर्मिनल जैसा कि इसके नाम का उपयोग कर के माध्यम से , केवल।/usr/bin:/bin:/usr/sbin:/sbin
cpdf
/usr/local/bin/cpdf
cpdf
यह भी ध्यान दें कि यदि आप मूल फ़ाइलों को नहीं रखना चाहते हैं, तो कोड के अंतिम पंक्ति के ऊपर कमांड ( #
सामने से हटाएं ) को # 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।
मूल फ़ाइलों को " फ़ाइल नाम (मूल) .pdf " में ले जाया जाएगा और नई बनाने वाली पीडीएफ फाइल में अंतिम पृष्ठ होगा, यदि 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
cpdf in.pdf 2-end out.pdf
। आपके ओपी के जवाब में दिया गया कोड अंतिम पृष्ठ को हटाने के लिए विशिष्ट है और आप बस स्क्रिप्ट के2-end
स्थान पर 1-~2
या उसके 1
भीतर उपयोग नहीं कर सकते हैं जैसा कि लिखा गया है। शर्तों से मेल खाने के लिए आपको इसे फिर से बनाना होगा। यदि आप एक नया प्रश्न पोस्ट करते हैं तो मैं एक स्क्रिप्ट पोस्ट करूंगा जो शर्तों के अनुकूल है।
cpdf in.pdf 1-~2 -o out.pdf
अब 2-पेज के दस्तावेज़ों के लिए भी काम करता है। यदि आप अपने उत्तर को तदनुसार संपादित कर सकते हैं तो यह बहुत अच्छा होगा। यह स्क्रिप्ट को बहुत सरल करेगा।