pdfx कैसे इंस्टॉल करें?
pdfx कमांड पाने के लिए पैकेज को ग्लोबल रूप से इंस्टॉल करें। या इंस्टॉल किए बिना एक बार चलाएँ।
npm install -g @pdf123/cli
pdfx --versionnpx @pdf123/cli merge a.pdf b.pdf -o merged.pdf
bunx @pdf123/cli merge a.pdf b.pdf -o merged.pdfbun add -g @pdf123/cli और pnpm add -g @pdf123/cli भी चलते हैं। और कुछ इंस्टॉल करने की ज़रूरत नहीं है।
शुरुआत कैसे करें?
ये छह कमांड आम पैटर्न दिखाते हैं।
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, या बराबर चिह्न के बाद।
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 से Markdown | PDF को Markdown में बदलता है |
pdfx rotate in.pdf --angle 90 | घुमाएँ | पृष्ठ की दिशा 90, 180 या 270 डिग्री बदलता है |
pdfx repair broken.pdf | सुधारें | क्षतिग्रस्त PDF की संरचना फिर से बनाता है |
एक साथ कई फ़ाइलें कैसे प्रोसेस करें?
एक-फ़ाइल वाले टूल को कई फ़ाइलें दें और pdfx बैच चलाता है। -o के साथ ऐसी डायरेक्टरी दें जिसके अंत में स्लैश हो। टूल हर फ़ाइल पर एक बार चलता है, डिफ़ॉल्ट रूप से एक बार में दो फ़ाइलें। इसे --concurrency से बदलें।
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 ऐरे दें।
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 में टूल चलने से पहले हर नामित फ़ाइल अलग से अनलॉक होती है।
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के साथ अस्वीकार हो जाता है। कुछ नहीं लिखा जाता। - जो आउटपुट लिखा नहीं जा सकता, वह उपयोग की त्रुटि है और कुछ भी अपलोड होने से पहले पकड़ ली जाती है।
cat in.pdf | pdfx compress - -o - > out.pdf--json क्या छापता है?
सेव किए गए नतीजे के लिए --json पथ, कंटेंट टाइप और आकार छापता है। रिपोर्ट लौटाने वाला टूल रिपोर्ट ही छापता है। बैच एक रिपोर्ट छापता है जिसमें हर फ़ाइल की स्थिति होती है।
{ "path": "one.pdf", "contentType": "application/pdf", "bytes": 1040 }{
"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 | उपयोग की त्रुटि। कुछ अपलोड नहीं हुआ |
130 | Ctrl-C से रोका गया। चल रहा अनुरोध रद्द हो जाता है |
सर्वर के देने पर विफलताएँ reason:, code: और hint: पंक्तियाँ छापती हैं, ताकि स्क्रिप्ट पाठ मिलाए बिना शाखा चुन सके। जिस टूल के पास लौटाने को कुछ नहीं होता, जैसे बिना तालिका वाले PDF पर pdf-to-csv, वह खाली फ़ाइल लिखने के बजाय code: no_content के साथ 1 पर समाप्त होता है। कोड त्रुटि कोड पर सूचीबद्ध हैं।
pdfx को अपने सर्वर की ओर कैसे मोड़ें?
PDFX_API_BASE सेट करें, या --api-base दें, सेल्फ-होस्ट pdfx-server के पते के साथ। यदि आपके सर्वर को कुंजी चाहिए तो PDFX_API_KEY भी जोड़ें। देखें सेल्फ-होस्ट।
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 इस्तेमाल करें। यह ठीक एक अनुरोध भेजता है और स्थानीय रूप से कुछ वैलिडेट नहीं करता, इसलिए पासवर्ड और बैच अस्वीकार हो जाते हैं।
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संबंधित पेज
- डेवलपर अवलोकन, जिसमें REST API और प्रमाणीकरण है
- TypeScript SDK, वह लाइब्रेरी जिस पर कमांड लाइन बनी है
- AI एजेंट के लिए MCP सर्वर
- PDF123 ब्लॉग की पोस्ट "pdfx CLI: One Catalog, Called From Your Terminal"
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 के साथ समाप्त होता है। बैच में ऐसी फ़ाइल को मेल न खाने वाली गिना जाता है, विफल नहीं।