मैं एक पीडीएफ फाइल को जल्दी से एकल पृष्ठों में कैसे विभाजित कर सकता हूं (यानी टर्मिनल कमांड लाइन से)?


23

मेरे पास एक पीडीएफ फाइल 6 पेज लंबी है जिसे मैं 1.pdf, 2.pdf, 3.pdf, आदि में विभाजित करना चाहता हूं ...

पूर्वावलोकन इसके लिए आश्चर्यजनक रूप से काम नहीं करता है (जब तक कि मुझे कुछ याद नहीं है)।

मैं कमांड लाइन से इस सरल कार्य को करने में सक्षम होना पसंद करूंगा, लेकिन इस बिंदु पर मैं कुछ भी काम करूंगा जो कि काम करता है (स्केच सॉफ़्टवेयर डाउनलोड किए बिना)

FYI करें http://users.skynet.be/tools/ विज्ञापित के रूप में काम नहीं करता है।


2
एक अच्छा कमांड लाइन समाधान इस एसई उत्तर से है । आप Homebrew का उपयोग करके भूतलेख स्थापित कर सकते हैं ।
फिडेली 10

जवाबों:


21

पूर्वावलोकन में पीडीएफ खोलें और फिर दृश्य मेनू पर थंबनेल का चयन करें। Ctrl उन पृष्ठों का चयन करें जिन्हें आप अब चाहते हैं और उन्हें डेस्कटॉप पर खींचें।


1
इसने अच्छा काम किया। लगभग 30 मिनट तक बहने के बाद मुझे ऐसा करने में लगभग 30 सेकंड का समय लगा। कुछ लोग इस तकनीक का उपयोग संयोजन w / Automator में कर रहे हैं, लेकिन मैंने अभी तक इसकी कोशिश नहीं की है।
user391339

35

इसका उपयोग करके प्राप्त किया जा सकता है pdfseparate। आप popbreer को homebrew के साथ, द्वारा स्थापित कर सकते हैं brew install poppler। यह भी स्थापित होगा pdfseparate। पीडीएफ विभाजित करने के लिए document.pdfमें एकल पृष्ठों में 1.pdf, 2.pdfआदि उपयोग:

pdfseparate document.pdf %d.pdf

1
popplerएसवीजी के साथ पीडीएफ दस्तावेजों को बदलने में सक्षम होने के लिए बस एक दिन पहले स्थापित किया गया है pdf2svg। ध्यान नहीं दिया जो कमांड के popplerसाथ आता है pdfseparate। चूँकि ऊपर दिए गए स्वीकृत उत्तर (सभी पीडीएफ पृष्ठों को डेस्कटॉप पर पूर्वावलोकन के साथ खींचना और छोड़ना) के लिए मुझे "चारों ओर क्लिक" करने की आवश्यकता होती है और चूंकि मुझे टर्मिनल पर ऐसे समाधान पसंद हैं जो स्वचालित रूप से एक ही कमांड लाइन द्वारा काम करते हैं, pdfseparateठीक वही है जो मुझे चाहिए। उस संकेत के लिए बहुत बहुत धन्यवाद!
अरविद

दिलचस्प बात यह है कि, pdfseparate pdfs का उत्पादन करता है, जिसका कुल आकार मूल पीडीएफ के आकार से बहुत अधिक है। मेरे पास 1.9 एमबी के साथ 400 पृष्ठों का दस्तावेज़ था। बंटवारे के बाद, मुझे 60 एमबी के आसपास कुछ मिला।
कॉन्स्टेंटिन

5

यदि आप कमांड लाइन से ऐसा करने में रुचि रखते हैं, तो आप कार्य करने के लिए बेंजामिन हान की विभाजित पीपीडीएफ पायथन स्क्रिप्ट को देख सकते हैं। उदाहरण के लिए:

splitPDF.py in.pdf 3 5

in.pdfपेज 3 और 5 में विभाजित होकर फ़ाइल को 3 फ़ाइलों में विभाजित करेगा ।


यह अच्छा है, और जो आप ऊपर pdfseparate से आउटपुट कर सकते हैं उसमें थोड़ा और अधिक लचीला है। हालाँकि यह मुख्य रूप से एक pdf को पृष्ठों के चकलों में विभाजित करने के लिए है, यदि आप प्रत्येक पृष्ठ को विभाजित करना चाहते हैं, तो आप आसानी से seqअपने कमांड में कई नंबरों का उत्पादन करने के लिए उपयोग कर सकते हैं । धन्यवाद!
dgig

1
python splitPDF.py MyPDF.pdf $(seq -s ' ' 1 10 411)मेरे लिए कुछ इस तरह काम किया
dgig

1
महान शब्द। मैं इस MacOS 10.13.3 पर सीधे काम करता है इस बात की पुष्टि
MichaelCodes

1

एक अन्य विकल्प के लिए, इस उत्तर को देखें । यह ImageMagick कमांड लाइन टूल्स का उपयोग करता है ।

convert x.pdf -quality 100 -density 300x300 x-%04d.pdf

हालांकि, आपको गुणवत्ता से सावधान रहना होगा।


1

यदि आप पृष्ठों की एक श्रृंखला निकालना चाहते हैं, तो आप निम्न स्क्रिप्ट का उपयोग कर सकते हैं जिसे आप इस तरह कहते हैं (यह मानकर कि आप इसे अपने सिस्टम के PATH, जैसे / usr / लोकल / बिन पर कहीं और pdfextract.py फ़ाइल को सेव करने के लिए सहेजते हैं और इसे निष्पादित करते हैं। chmod 744 pdfextract.py के साथ अनुमति):

pdfextract.py --file-in / path / to / large / pdf --file-out / path / to / new / pdf --start --stop

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import argparse
import os
import subprocess as sp


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--file-in', required=True, type=str, dest='file_in')
    parser.add_argument('--file-out', required=True, type=str, dest='file_out')
    parser.add_argument('--start', required=True, type=int, dest='start', default=-1)
    parser.add_argument('--stop', required=True, type=int, dest='stop', default=-1)

    args = parser.parse_args()
    assert os.path.isfile(args.file_in)
    assert not os.path.isfile(args.file_out)

    # remove temporary files
    for el in os.listdir('/tmp'):
        if os.path.isfile(os.path.join('/tmp', el)) and el[:12] == 'pdfseparate-':
            os.remove(os.path.join('/tmp', el))

    sp.check_call('pdfseparate -f {:d} -l {:d} {:s} /tmp/pdfseparate-%d.pdf'.format(args.start, args.stop, args.file_in), shell=True)

    cmd_unite = 'pdfunite '
    for i in range(args.start, args.stop + 1):
        cmd_unite += '/tmp/pdfseparate-{:d}.pdf '.format(i)
    cmd_unite += args.file_out
    sp.check_call(cmd_unite, shell=True)

    # remove temporary files
    for el in os.listdir('/tmp'):
        if os.path.isfile(os.path.join('/tmp', el)) and el[:12] == 'pdfseparate-':
            os.remove(os.path.join('/tmp', el))


if __name__ == "__main__":
    main()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.