मुख्य सामग्री पर जाएँ
PPDF123

pdfx: PDF123 की कमांड लाइन

pdfx PDF123 की कमांड लाइन है, जो npm पर @pdf123/cli नाम से प्रकाशित है। यह आपकी डिस्क की फ़ाइलों पर मर्ज, स्प्लिट, कंप्रेस और OCR जैसे 95 PDF टूल में से कोई भी चलाती है: फ़ाइलें PDF123 API या आपके अपने सर्वर को भेजती है और नतीजा स्थानीय रूप से सेव करती है।

@pdf123/cliNode 20.3 या नया संस्करण, या Bun

इंस्टॉल

npm install -g @pdf123/cli
इस पेज पर

pdfx कैसे इंस्टॉल करें?

pdfx कमांड पाने के लिए पैकेज को ग्लोबल रूप से इंस्टॉल करें। या इंस्टॉल किए बिना एक बार चलाएँ।

इंस्टॉलbash
npm install -g @pdf123/cli
pdfx --version
बिना इंस्टॉल किए चलाएँbash
npx @pdf123/cli merge a.pdf b.pdf -o merged.pdf
bunx @pdf123/cli merge a.pdf b.pdf -o merged.pdf

bun add -g @pdf123/cli और pnpm add -g @pdf123/cli भी चलते हैं। और कुछ इंस्टॉल करने की ज़रूरत नहीं है।

शुरुआत कैसे करें?

ये छह कमांड आम पैटर्न दिखाते हैं।

जल्दी शुरू करेंbash
pdfx list                                          # every tool; --category security for one category
pdfx describe watermark                            # a tool's fields and defaults
pdfx merge a.pdf b.pdf -o merged.pdf
pdfx compress *.pdf -o compressed/                 # several files: one result per file
pdfx watermark in.pdf --watermarkText DRAFT
pdfx pipeline a.pdf b.pdf --step merge --step compress -o out.pdf

कोई भी टूल कैसे चलाएँ?

पहला आर्गुमेंट टूल की आईडी है। उसके बाद इनपुट फ़ाइलें और टूल के विकल्प आते हैं। टूल का हर विकल्प एक फ़्लैग है, जो API फ़ील्ड के नाम (--pageNumbers) या केबाब केस (--page-numbers) में लिखा जाता है। ऋणात्मक संख्या अपने फ़्लैग के बाद स्पेस देकर लिखी जा सकती है, जैसे --rotation -90, या बराबर चिह्न के बाद।

सिंटैक्सtext
pdfx <tool> [files...] [--<field> <value>]...

टूल देखने के लिए pdfx list इस्तेमाल करें। यह --category या --group और खोजने के शब्दों के साथ --query स्वीकार करता है। एंडपॉइंट, स्वीकार्य इनपुट, टूल बैच के रूप में चलता है या नहीं, और हर फ़ील्ड का डिफ़ॉल्ट व अनुमत मान देखने के लिए pdfx describe <tool> इस्तेमाल करें। अज्ञात टूल आईडी पर सुझाव मिलते हैं, और गलत टाइप की गई आईडी कोड 2 के साथ बाहर निकल जाती है।

कौन-सी कमांड किस टूल पेज से जुड़ती है?

कमांडटूल पेजक्या करता है
pdfx merge a.pdf b.pdf -o merged.pdfमिलाएँकई PDF को एक में जोड़ता है
pdfx split report.pdf --pageNumbers 3,7 -o parts.zipबाँटेंPDF को अलग फ़ाइलों में बाँटता है
pdfx compress in.pdf -o out/संपीड़ित करेंआकार घटाने के लिए PDF स्ट्रीम दोबारा संपीड़ित करता है
pdfx watermark in.pdf --watermarkText DRAFTवॉटरमार्कपाठ या छवि का वॉटरमार्क लगाता है
pdfx protect in.pdf --password secret -o locked.pdfसुरक्षित करेंPDF को पासवर्ड से एन्क्रिप्ट करता है
pdfx unlock locked.pdf --password secretअनलॉक करेंपासवर्ड सुरक्षा हटाता है
pdfx get-info in.pdfदस्तावेज़ जानकारीमेटाडेटा, अनुमतियाँ और संरचना JSON में छापता है
pdfx ocr scan.pdf -o out/OCRस्कैन किया PDF पढ़कर Markdown सेव करता है
pdfx pdf-to-markdown in.pdf -o out/PDF से MarkdownPDF को Markdown में बदलता है
pdfx rotate in.pdf --angle 90घुमाएँपृष्ठ की दिशा 90, 180 या 270 डिग्री बदलता है
pdfx repair broken.pdfसुधारेंक्षतिग्रस्त PDF की संरचना फिर से बनाता है

एक साथ कई फ़ाइलें कैसे प्रोसेस करें?

एक-फ़ाइल वाले टूल को कई फ़ाइलें दें और pdfx बैच चलाता है। -o के साथ ऐसी डायरेक्टरी दें जिसके अंत में स्लैश हो। टूल हर फ़ाइल पर एक बार चलता है, डिफ़ॉल्ट रूप से एक बार में दो फ़ाइलें। इसे --concurrency से बदलें।

बैचbash
pdfx compress *.pdf -o compressed/
pdfx protect *.pdf --password secret --concurrency 4 -o locked/

हर फ़ाइल पूरी होने पर pdfx एक पंक्ति, input -> saved, छापता है। विफल फ़ाइल की सूचना स्टैंडर्ड एरर पर आती है और बाकी फ़ाइलें फिर भी पूरी होती हैं। चल रहे अनुरोध को रोकने के लिए Ctrl-C एक बार दबाएँ; जो फ़ाइलें सेव हो चुकी हैं, वे बची रहती हैं। दूसरा Ctrl-C तुरंत कोड 130 के साथ बाहर निकल जाता है। --idempotency-key k के साथ हर फ़ाइल k:<index> भेजती है, और वही अनुरोध दोहराने पर 24 घंटे तक पहला नतीजा दोहराया जाता है।

रिपोर्ट लौटाने वाले टूल, जैसे get-info, का बैच -o के बिना कोई फ़ाइल नहीं लिखता। वह इनपुट फ़ाइल के हिसाब से रिपोर्टें छापता है।

एक अनुरोध में टूल कैसे जोड़ें?

pdfx pipeline एक अनुरोध में कई टूल चलाता है। हर टूल के लिए --step दोहराएँ। विकल्प देने के लिए --steps के साथ JSON ऐरे दें।

पाइपलाइनbash
pdfx pipeline a.pdf b.pdf --step merge --step compress -o out.pdf
pdfx pipeline in.pdf --steps '[{"tool":"watermark","params":{"watermarkText":"DRAFT"}},{"tool":"compress"}]' -o out.pdf

चरणों में ऐसे टूल इस्तेमाल नहीं हो सकते जिन्हें दूसरी फ़ाइल चाहिए।

पासवर्ड वाले PDF कैसे खोलें?

--input-password हर एन्क्रिप्टेड इनपुट को पहले खोलता है। --password-for <file>=<password> एक फ़ाइल का पासवर्ड तय करता है। इसे दोहराया जा सकता है, और फ़ाइल के नाम की जगह * बाकी सब फ़ाइलों पर लागू होता है। यह ऐसे बैच के लिए ठीक है जिसमें बंद और खुली फ़ाइलें मिली हों। merge और images-to-pdf में टूल चलने से पहले हर नामित फ़ाइल अलग से अनलॉक होती है।

पासवर्डbash
pdfx compress locked.pdf --input-password secret -o out.pdf
pdfx compress report.pdf --password-for report.pdf=secret -o out.pdf
pdfx merge a.pdf b.pdf --password-for a.pdf=secret -o merged.pdf

यही विकल्प पाइपलाइन में भी चलते हैं। सुरक्षा हमेशा के लिए हटाने के लिए अनलॉक करें टूल को उसके अपने --password विकल्प के साथ इस्तेमाल करें।

इनपुट और आउटपुट कैसे काम करते हैं?

  • इनपुट - स्टैंडर्ड इनपुट पढ़ता है, हर बार चलाने पर एक बार। -o - नतीजा स्टैंडर्ड आउटपुट पर लिखता है।
  • -o file.pdf वह फ़ाइल लिखता है। -o dir/ डायरेक्टरी में लिखता है। जो डायरेक्टरी अभी मौजूद नहीं है, उसके लिए अंत का स्लैश ज़रूरी है, क्योंकि बिना स्लैश वाला नाम फ़ाइल की तरह लिखा जाता है।
  • -o के बिना नतीजे मौजूदा डायरेक्टरी में सर्वर के दिए फ़ाइल नाम से जाते हैं।
  • डायरेक्टरी में pdfx किसी मौजूदा फ़ाइल को कभी नहीं बदलता; वह नया नाम चुनता है। साफ़ तौर पर दिया गया -o file.pdf उस फ़ाइल को बदल देता है।
  • ऐसा -o फ़ाइल नाम जिसका एक्सटेंशन नतीजे से मेल नहीं खाता, जैसे split से बने ZIP को .pdf नाम से सेव करना, एक्ज़िट कोड 2 और code: output_mismatch के साथ अस्वीकार हो जाता है। कुछ नहीं लिखा जाता।
  • जो आउटपुट लिखा नहीं जा सकता, वह उपयोग की त्रुटि है और कुछ भी अपलोड होने से पहले पकड़ ली जाती है।
शेल पाइपbash
cat in.pdf | pdfx compress - -o - > out.pdf

--json क्या छापता है?

सेव किए गए नतीजे के लिए --json पथ, कंटेंट टाइप और आकार छापता है। रिपोर्ट लौटाने वाला टूल रिपोर्ट ही छापता है। बैच एक रिपोर्ट छापता है जिसमें हर फ़ाइल की स्थिति होती है।

एकल नतीजाjson
{ "path": "one.pdf", "contentType": "application/pdf", "bytes": 1040 }
बैच रिपोर्टjson
{
  "processed": 2,
  "unmatched": 0,
  "failed": 0,
  "files": [
    { "input": "/abs/a.pdf", "ok": true, "path": "comp/a.pdf", "contentType": "application/pdf", "bytes": 1040 }
  ]
}

विफल फ़ाइल में path और bytes की जगह error और reason होते हैं। मेल न खाने वाला फ़िल्टर टूल { "matched": false } छापता है। pdfx list --json ऐसी पंक्तियाँ छापता है जिनमें id, category, group, name, description, returns, files और filter होते हैं।

कौन-से विकल्प हर टूल पर लागू होते हैं?

विकल्पअसर
-o, --output <path>लिखने की फ़ाइल, या जिसमें लिखना है वह डायरेक्टरी। डिफ़ॉल्ट मौजूदा डायरेक्टरी है। - का मतलब स्टैंडर्ड आउटपुट
--api-base <url>API का मूल पता। एनवायरनमेंट वेरिएबल PDFX_API_BASE, डिफ़ॉल्ट https://pdf123.xyz
--api-key <key>X-API-KEY के रूप में भेजी जाती है। एनवायरनमेंट वेरिएबल PDFX_API_KEY। वैकल्पिक
--input-password <pw>पासवर्ड वाले हर इनपुट को पहले खोलता है
--password-for <file>=<pw>एक फ़ाइल का पासवर्ड। दोहराया जा सकता है
--concurrency <n>बैच की कितनी फ़ाइलें एक साथ प्रोसेस हों। डिफ़ॉल्ट 2
--timeout <ms>हर अनुरोध की समय-सीमा। डिफ़ॉल्ट 300000
--idempotency-key <k>24 घंटे तक पहला नतीजा दोहराता है
--jsonमशीन-पठनीय आउटपुट

एक्ज़िट कोड क्या हैं?

कोडमतलब
0सफलता। मेल न खाने वाला फ़िल्टर टूल भी 0 पर समाप्त होता है और no match छापता है
1अनुरोध विफल हुआ। बैच में कम से कम एक फ़ाइल विफल रही; बाकी फिर भी पूरी होती हैं
2उपयोग की त्रुटि। कुछ अपलोड नहीं हुआ
130Ctrl-C से रोका गया। चल रहा अनुरोध रद्द हो जाता है

सर्वर के देने पर विफलताएँ reason:, code: और hint: पंक्तियाँ छापती हैं, ताकि स्क्रिप्ट पाठ मिलाए बिना शाखा चुन सके। जिस टूल के पास लौटाने को कुछ नहीं होता, जैसे बिना तालिका वाले PDF पर pdf-to-csv, वह खाली फ़ाइल लिखने के बजाय code: no_content के साथ 1 पर समाप्त होता है। कोड त्रुटि कोड पर सूचीबद्ध हैं।

pdfx को अपने सर्वर की ओर कैसे मोड़ें?

PDFX_API_BASE सेट करें, या --api-base दें, सेल्फ-होस्ट pdfx-server के पते के साथ। यदि आपके सर्वर को कुंजी चाहिए तो PDFX_API_KEY भी जोड़ें। देखें सेल्फ-होस्ट।

सेल्फ-होस्ट सर्वरbash
export PDFX_API_BASE=http://localhost:8080
export PDFX_API_KEY=<your-key>
pdfx compress in.pdf

जो एंडपॉइंट CLI नहीं जानती, उसे कैसे चलाएँ?

pdfx call ऑपरेशन आईडी या /api/... पथ पर कच्चा अनुरोध भेजता है। फ़ॉर्म फ़ील्ड के लिए --field name=value और अतिरिक्त फ़ाइलों के लिए --file field=path इस्तेमाल करें। यह ठीक एक अनुरोध भेजता है और स्थानीय रूप से कुछ वैलिडेट नहीं करता, इसलिए पासवर्ड और बैच अस्वीकार हो जाते हैं।

कच्चे अनुरोधbash
pdfx call general/merge-pdfs a.pdf b.pdf -o merged.pdf
pdfx call /api/v1/misc/flatten in.pdf --field flattenOnlyForms=true -o flat.pdf

FAQ

क्या pdfx ऑफ़लाइन काम करता है?

नहीं। pdfx हर फ़ाइल PDF123 API या आपके अपने सर्वर पर अपलोड करता है और नतीजा स्थानीय रूप से सेव करता है, इसलिए API बेस तक पहुँच होनी चाहिए।

क्या pdfx को API कुंजी चाहिए?

नहीं। गुमनाम उपयोग चलता है। यदि आपके सर्वर को कुंजी चाहिए तो PDFX_API_KEY सेट करें या --api-key दें। कुंजी X-API-KEY हेडर के रूप में भेजी जाती है।

pdfx को Node का कौन-सा संस्करण चाहिए?

Node 20.3 या नया संस्करण, या Bun।

क्या pdfx मेरी फ़ाइलें अधिलेखित कर देगा?

डायरेक्टरी में लिखते समय नहीं: मौजूदा फ़ाइल कभी नहीं बदली जाती। यदि आप आउटपुट फ़ाइल का नाम खुद -o file.pdf से देते हैं, तो वह फ़ाइल बदल दी जाती है, इसलिए मूल फ़ाइल बचानी हो तो नया नाम चुनें।

फ़िल्टर टूल को मेल न मिले तो क्या होता है?

फ़िल्टर टूल, जिनकी आईडी filter- से शुरू होती है, शर्त पूरी होने पर फ़ाइल को आगे जाने देते हैं। शर्त पूरी न हो तो pdfx no match छापता है और कोड 0 के साथ समाप्त होता है। बैच में ऐसी फ़ाइल को मेल न खाने वाली गिना जाता है, विफल नहीं।