PDF में Java का उपयोग करके बारकोड सिग्नेचर कैसे बनाएं
इस ट्यूटोरियल में, आप बारकोड सिग्नेचर बनाना सीखेंगे PDF फ़ाइलों में Java और GroupDocs.Signature का उपयोग करके। बारकोड सिग्नेचर मशीन‑रीडेबल पहचानकर्ता एम्बेड करते हैं जो टैम्पर‑इविडेंट और स्कैन करने में आसान होते हैं—कॉन्ट्रैक्ट, सर्टिफ़िकेट, इनवॉइस, और किसी भी दस्तावेज़ के लिए परफेक्ट जो विश्वसनीय वेरिफिकेशन की आवश्यकता रखता है।
त्वरित उत्तर
- बारकोड सिग्नेचर क्या है? PDF में एम्बेड किया गया बारकोड जो संरचित डेटा संग्रहीत करता है और स्कैनर या सॉफ़्टवेयर द्वारा पढ़ा जा सकता है।
- कौन सा बारकोड प्रकार अनुशंसित है? Code128, क्योंकि यह अल्फ़ान्यूमेरिक डेटा को कॉम्पैक्ट रूप से संभालता है।
- क्या मुझे लाइसेंस चाहिए? परीक्षण के लिए एक फ्री ट्रायल काम करता है; उत्पादन के लिए पूर्ण लाइसेंस आवश्यक है।
- क्या मैं किसी भी पेज आकार पर बारकोड को स्थित कर सकता हूँ? हाँ—ऑटोमैटिक स्केलिंग के लिए प्रतिशत‑आधारित पोजिशनिंग का उपयोग करें।
- क्या बारकोड वेक्टर‑आधारित है? हाँ, यह PDF में केवल कुछ किलोबाइट जोड़ता है और किसी भी रिज़ॉल्यूशन पर स्पष्ट रहता है।
बारकोड सिग्नेचर क्या है?
बारकोड सिग्नेचर एक वेक्टर‑आधारित बारकोड है जो सीधे PDF पेज में एम्बेड किया जाता है, जो दृश्य तत्व और एक क्रिप्टोग्राफिक सिग्नेचर दोनों के रूप में कार्य करता है जिसे बाद में वैध किया जा सकता है। यह संरचित डेटा, जैसे ID या टाइमस्टैम्प, संग्रहीत करता है, और दस्तावेज़ की अखंडता सुनिश्चित करता है जबकि मशीन‑रीडेबल रेफ़रेंस प्रदान करता है।
आपके PDFs के लिए बारकोड सिग्नेचर क्यों महत्वपूर्ण हैं
बारकोड सिग्नेचर PDFs को एक कॉम्पैक्ट, मशीन‑रीडेबल पहचानकर्ता देते हैं जिसे तुरंत स्कैन किया जा सकता है, मैन्युअल डेटा एंट्री को समाप्त करता है और त्रुटियों को कम करता है। क्योंकि वे वेक्टर ग्राफ़िक्स के रूप में एम्बेड होते हैं, वे किसी भी रिज़ॉल्यूशन पर शार्प रहते हैं और फ़ाइल में केवल कुछ किलोबाइट जोड़ते हैं। पढ़ने की आसानी, टैम्पर‑इविडेंस, और न्यूनतम आकार का यह संयोजन उन्हें कॉन्ट्रैक्ट, इनवॉइस, सर्टिफ़िकेट और किसी भी दस्तावेज़ के लिए आदर्श बनाता है जिसे विश्वसनीय वेरिफिकेशन चाहिए।
यहाँ एक चुनौती है जिसका आप संभवतः सामना कर चुके हैं: आपको PDFs में यूनिक आइडेंटिफ़ायर जोड़ने हैं जो मशीन‑रीडेबल और टैम्पर‑इविडेंट दोनों हों। शायद आप एक डॉक्यूमेंट मैनेजमेंट सिस्टम पर काम कर रहे हैं, सर्टिफ़िकेट प्रोसेस कर रहे हैं, या कॉन्ट्रैक्ट्स को हैंडल कर रहे हैं जिन्हें बाद में वेरिफ़ाई करना पड़ेगा।
यहीं पर बारकोड सिग्नेचर काम आते हैं। साधारण टेक्स्ट स्टैम्प की तुलना में, बारकोड आपको संरचित डेटा एम्बेड करने की अनुमति देते हैं जिसे स्कैनर (और आपका सॉफ़्टवेयर) तुरंत पढ़ सकता है। साथ ही, जब आप इसे GroupDocs.Signature for Java के माध्यम से PDF साइनिंग के साथ जोड़ते हैं, तो आप बिना जटिल डेटाबेस लुकअप के दस्तावेज़ को ट्रैक और वेरिफ़ाई करने का एक शक्तिशाली तरीका प्राप्त करते हैं।
इस गाइड में, आप ठीक-ठीक सीखेंगे कि अपने Java PDFs में बारकोड सिग्नेचर कैसे इम्प्लीमेंट करें — बेसिक सेटअप से लेकर प्रोडक्शन‑रेडी कोड तक, लचीली पोजिशनिंग के साथ। चाहे आप इनवॉइस सिस्टम, सर्टिफ़िकेट जेनरेटर, या कॉन्ट्रैक्ट मैनेजमेंट प्लेटफ़ॉर्म बना रहे हों, अंत तक आपके पास सब कुछ होगा।
आप क्या सीखेंगे:
- मिनटों में GroupDocs.Signature for Java सेट अप करना
- Code128 बारकोड सिग्नेचर बनाना (और क्यों यह अक्सर आपका सबसे अच्छा विकल्प है)
- किसी भी PDF आकार में काम करने वाले प्रतिशत‑आधारित लेआउट का उपयोग करके बारकोड को स्थित करना
- डेवलपर्स को अक्सर फँसाने वाले सामान्य pitfalls से बचना
- अपनी इम्प्लीमेंटेशन का सही ढंग से परीक्षण करना
Java में बारकोड सिग्नेचर कैसे बनाएं
Java में बारकोड सिग्नेचर बनाना लक्ष्य PDF को लोड करने, डेटा, टाइप, साइज और पोजिशन जैसे बारकोड विकल्प कॉन्फ़िगर करने, और फिर सिग्नेचर लागू करके नया डॉक्यूमेंट जेनरेट करने में शामिल है। GroupDocs.Signature रेंडरिंग और क्रिप्टोग्राफिक बाइंडिंग को संभालता है, इसलिए आपको केवल वांछित पैरामीटर सप्लाई करने और फ़ाइल पाथ्स को मैनेज करने की जरूरत है।
पूर्वापेक्षाएँ और पर्यावरण चेकलिस्ट
डाइव करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित आइटम तैयार हैं:
- Java Development Kit (JDK) 8 या नया – सभी GroupDocs Java लाइब्रेरीज़ के लिए आवश्यक।
- Maven या Gradle – GroupDocs.Signature डिपेंडेंसी को मैनेज करने के लिए।
- एक IDE जैसे IntelliJ IDEA, Eclipse, या VS Code जिसमें Java एक्सटेंशन हों।
- GroupDocs.Signature for Java (संस्करण 23.12 या नया अनुशंसित)।
- बेसिक Java ज्ञान – आपको क्लासेज़ बनाना, एक्सेप्शन हैंडल करना, और फ़ाइल I/O के साथ काम करना आना चाहिए।
अपने प्रोजेक्ट में GroupDocs.Signature सेट अप करना
लाइब्रेरी को अपने प्रोजेक्ट में लाना सीधा है। अपना बिल्ड टूल चुनें:
Maven उपयोगकर्ताओं के लिए, अपने pom.xml में यह डिपेंडेंसी जोड़ें:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle उपयोग कर रहे हैं? अपने build.gradle में यह लाइन जोड़ें:
implementation 'com.groupdocs:groupdocs-signature:23.12'
मैन्युअल सेटअप पसंद है? सीधे GroupDocs.Signature for Java releases से JAR डाउनलोड करें और इसे अपने क्लासपाथ में जोड़ें।
अपना लाइसेंस सेट करना
पूरा प्रोडक्शन जाने से पहले, आपको लाइसेंसिंग को हैंडल करना होगा:
- Free Trial: परीक्षण के लिए परफेक्ट — कोर फीचर्स को एक्सप्लोर करने के लिए GroupDocs वेबसाइट से प्राप्त करें।
- Temporary License: मूल्यांकन के लिए अधिक समय चाहिए? 30‑दिन का टेम्पररी लाइसेंस के लिए अप्लाई करें।
- Full License: उत्पादन के लिए तैयार? अनलिमिटेड उपयोग के लिए लाइसेंस खरीदें।
यहाँ एक त्वरित sanity चेक है ताकि सब कुछ काम कर रहा हो यह सुनिश्चित हो सके:
Signature signature = new Signature("sample.pdf");
System.out.println("Signature object created successfully.");
यदि यह बिना त्रुटियों के चलता है, तो आप तैयार हैं!
Java में बारकोड सिग्नेचर कैसे बनाएं
अब मज़ेदार हिस्सा — आइए एक PDF को बारकोड के साथ साइन करें। हम इसे छोटे‑छोटे चरणों में तोड़ेंगे ताकि आप प्रत्येक चरण में क्या हो रहा है ठीक‑ठीक समझ सकें।
चरण 1: Signature ऑब्जेक्ट को इनिशियलाइज़ करें
Definition anchor: Signature क्लास GroupDocs.Signature का एंट्री पॉइंट है PDF दस्तावेज़ को लोड, मॉडिफ़ाई और सेव करने के लिए।
पहले, आपको GroupDocs को बताना होगा कि आप किस PDF के साथ काम कर रहे हैं:
Signature signature = new Signature("input.pdf");
What’s happening here: Signature ऑब्जेक्ट आपका PDF मेमोरी में लोड करता है और मॉडिफ़िकेशन के लिए तैयार करता है। सुनिश्चित करें कि आपका फ़ाइल पाथ सही है — एक आम ग़लती Windows पर बैकस्लैश का उपयोग बिना एस्केप किए करना है (\\ उपयोग करें या सिर्फ फ़ॉरवर्ड स्लैश, जो क्रॉस‑प्लेटफ़ॉर्म काम करता है)।
चरण 2: अपने बारकोड विकल्प कॉन्फ़िगर करें (बारकोड कैसे जोड़ें)
Definition anchor: BarcodeSignOptions सभी सेटिंग्स को एन्कैप्सुलेट करता है जो PDF के अंदर बारकोड रेंडर करने के लिए आवश्यक हैं।
अब चलिए आपके डेटा के साथ बारकोड सिग्नेचर बनाते हैं:
BarcodeSignOptions options = new BarcodeSignOptions("12345678");
options.setEncodeType(BarcodeEncodeType.Code128);
"12345678"आपका बारकोड डेटा है — यह एक ऑर्डर ID, सर्टिफ़िकेट नंबर, या कोई भी पहचानकर्ता हो सकता है जिसकी आपको आवश्यकता है।Code128एन्कोडिंग टाइप है (सही टाइप चुनने के बारे में नीचे देखें)।
Pro tip: Code128 संख्या और अक्षर दोनों को संभाल सकता है, जिससे यह अधिकांश उपयोग मामलों के लिए बहुमुखी बनता है। यदि आपको केवल संख्याएँ चाहिए, तो Code39 सरल हो सकता है, लेकिन Code128 अधिक लचीलापन देता है।
चरण 3: अपने बारकोड को स्थित करें (PDF को बारकोड के साथ साइन कैसे करें)
Definition anchor: SignatureOptions लेआउट प्रॉपर्टीज़ प्रदान करता है जैसे पेज नंबर, साइज, और अलाइनमेंट।
यहाँ GroupDocs वास्तव में चमकता है — प्रतिशत‑आधारित पोजिशनिंग का मतलब है आपका बारकोड किसी भी PDF साइज पर अच्छा दिखेगा:
options.setLeft(10); // 10% from the left edge
options.setTop(90); // 90% from the bottom edge (near the footer)
options.setWidth(30); // 30% of page width
options.setHeight(10); // 10% of page height
options.setPageNumber(1);
Why percentages matter: कल्पना करें आप A4 दस्तावेज़ और लीगल‑साइज़ फॉर्म दोनों को साइन कर रहे हैं। प्रतिशत पोजिशनिंग के साथ, आपका बारकोड दोनों पर स्वचालित रूप से स्केल हो जाता है ताकि समान दिखे। फिक्स्ड पिक्सेल वैल्यूज़ का उपयोग करने से बड़ा दस्तावेज़ पर बारकोड बहुत छोटा या छोटे दस्तावेज़ पर बहुत बड़ा हो जाएगा।
Real‑world example: A4 पेज (595 × 842 पॉइंट) पर, 30% चौड़ाई वाला बारकोड लगभग 180 पॉइंट चौड़ा होगा। लीगल पेज (612 × 1008 पॉइंट) पर यह लगभग 184 पॉइंट चौड़ा होगा — स्वचालित रूप से प्रोपोर्शनल।
चरण 4: दस्तावेज़ को साइन और सेव करें (बारकोड PDF कैसे जोड़ें)
अब वास्तव में सिग्नेचर लागू करने और अपना काम सेव करने का समय है:
signature.sign(outputPath, options);
Important note: आउटपुट डायरेक्टरी को कोड चलाने से पहले मौजूद होना चाहिए। GroupDocs आपके लिए नेस्टेड डायरेक्टरी नहीं बनाता, इसलिए पहले उन्हें बनाएं या कोड में हैंडल करें:
new File("output").mkdirs();
What if something goes wrong? इसे एक try‑catch ब्लॉक में रैप करें:
try {
signature.sign("signed.pdf", options);
} catch (Exception e) {
e.printStackTrace();
}
अपनी आवश्यकताओं के लिए सही बारकोड टाइप चुनना (generate code128 barcode)
GroupDocs कई बारकोड फ़ॉर्मेट सपोर्ट करता है, और सही चुनना महत्वपूर्ण है। यहाँ एक प्रैक्टिकल तुलना है:
Code128 (हमारा डिफ़ॉल्ट विकल्प):
- उपयुक्त: मिश्रित अल्फ़ान्यूमेरिक डेटा (जैसे “INV2024-001” IDs)
- Capacity: अधिकतम 128 ASCII कैरेक्टर
- Why it wins: कॉम्पैक्ट, व्यापक समर्थन, अक्षर और संख्या दोनों को संभालता है
- Use when: आपको लचीलापन चाहिए और आप नहीं जानते कि कौन सा डेटा एन्कोड करेंगे
Code39:
- उपयुक्त: सरल अल्फ़ान्यूमेरिक कोड
- Capacity: 43 कैरेक्टर (A‑Z, 0‑9, और कुछ सिंबल)
- Why consider it: पुराने स्कैनर अक्सर इसे बेहतर सपोर्ट करते हैं
- Use when: लेगेसी सिस्टम के साथ काम कर रहे हैं या सरलता डेटा डेंसिटी से अधिक महत्वपूर्ण है
QR Code:
- उपयुक्त: बड़ी मात्रा में डेटा (URLs, JSON पेलोड)
- Capacity: अधिकतम 3 KB डेटा
- Why it’s powerful: जटिल डेटा स्ट्रक्चर स्टोर कर सकता है, एरर करेक्शन बिल्ट‑इन
- Use when: आपको संरचित डेटा या URLs एम्बेड करने की जरूरत है
EAN/UPC:
- उपयुक्त: प्रोडक्ट आइडेंटिफ़िकेशन
- Capacity: फिक्स्ड‑लेंथ न्यूमेरिक कोड (8‑13 अंक)
- Use when: आप रिटेल या इन्वेंटरी सिस्टम के साथ काम कर रहे हैं
Quick decision guide:
- अक्षर और संख्या चाहिए? → Code128
- केवल संख्या, सरल रखना है? → Code39
- बहुत डेटा या URLs? → QR Code
- रिटेल/प्रोडक्ट कोड? → EAN/UPC
सामान्य pitfalls और उन्हें कैसे बचें (tamper evident barcode)
डेवलपर्स को अक्सर जो समस्याएँ आती हैं, उन्हें यहाँ बताया गया है (ताकि आपको नहीं झेलना पड़े):
समस्या 1: बारकोड पोजिशनिंग गलत दिख रही है
Symptom: आपका बारकोड अनपेक्षित स्थानों पर दिखाई देता है या कट जाता है।
Common causes:
- विभिन्न पेज साइज पर पिक्सेल वैल्यूज़ का उपयोग
- यह भूलना कि PDF कॉर्डिनेट्स बॉटम‑लेफ़्ट से शुरू होते हैं, टॉप‑लेफ़्ट नहीं
- मार्जिन्स कंटेंट को विज़िबल एरिया से बाहर धकेल रहे हैं
Solution: स्थिरता के लिए हमेशा प्रतिशत‑आधारित पोजिशनिंग उपयोग करें:
options.setLeft(5);
options.setTop(95);
options.setWidth(40);
options.setHeight(12);
समस्या 2: बारकोड टेक्स्ट पढ़ने योग्य नहीं है
Symptom: एन्कोडेड टेक्स्ट दिखता है लेकिन स्कैनर इसे पढ़ नहीं पाते।
Causes:
- डेटा की मात्रा के लिए बारकोड बहुत छोटा है
- आपके डेटा के लिए गलत एन्कोडिंग टाइप
- बार्स और बैकग्राउंड के बीच कम कॉन्ट्रास्ट
Solution: डेटा लंबाई के अनुसार बारकोड साइज मैच करें। Code128 के लिए 10‑15 कैरेक्टर के साथ, कम से कम 8‑10% पेज चौड़ाई लक्ष्य रखें।
समस्या 3: फ़ाइल पाथ एक्सेप्शन
Symptom: FileNotFoundException या समान त्रुटियाँ।
Causes:
- सिंगल बैकस्लैश के साथ हार्डकोडेड Windows पाथ्स
- आउटपुट डायरेक्टरी मौजूद नहीं है
- फ़ाइल परमिशन समस्याएँ
Solution: फ़ॉरवर्ड स्लैश उपयोग करें (वे हर जगह काम करते हैं) और पहले डायरेक्टरी बनाएं:
Path output = Paths.get("output/signed.pdf");
Files.createDirectories(output.getParent());
समस्या 4: बड़े PDFs के साथ मेमोरी समस्याएँ
Symptom: बड़े डॉक्यूमेंट प्रोसेस करते समय आउट‑ऑफ़‑मेमोरी एरर।
Solution: समाप्त होने पर Signature ऑब्जेक्ट को बंद करें ताकि रिसोर्सेज़ फ्री हो जाएँ:
signature.close();
अपने बारकोड इम्प्लीमेंटेशन का परीक्षण
डिप्लॉय करने से पहले, सुनिश्चित करें कि आपके बारकोड वास्तव में काम कर रहे हैं। यहाँ एक प्रैक्टिकल टेस्ट चेकलिस्ट है:
1. विज़ुअल इंस्पेक्शन टेस्ट
साइन किया हुआ PDF खोलें और जांचें:
- क्या बारकोड दिखाई दे रहा है और सही जगह पर स्थित है?
- क्या यह शार्प दिख रहा है (ब्लरी या पिक्सेलेटेड नहीं)?
- क्या इसके आसपास पर्याप्त व्हाइट स्पेस है?
2. स्कैनिंग टेस्ट
फ़ोन पर कोई बारकोड स्कैनर ऐप (जैसे “Barcode Scanner” या “QR & Barcode Reader”) का उपयोग करके वेरिफ़ाई करें:
- स्कैनर आपका बारकोड पढ़ सकता है
- डिकोडेड डेटा आपके एन्कोडेड डेटा से मेल खाता है
- यह विभिन्न एंगल्स और डिस्टेंस से काम करता है
3. क्रॉस‑प्लेटफ़ॉर्म टेस्ट
विभिन्न डिवाइसों पर अपना PDF खोलें:
- Windows (Adobe Reader, Chrome)
- Mac (Preview, Chrome)
- मोबाइल डिवाइस (iOS, Android)
सुनिश्चित करें कि बारकोड हर जगह सही रेंडर हो रहा है।
4. ऑटोमेटेड टेस्ट कोड
यहाँ एक सरल टेस्ट है जिसे आप चला सकते हैं:
Signature testSignature = new Signature("signed.pdf");
List<BarcodeSignature> signatures = testSignature.search(BarcodeSignature.class);
if (signatures.size() > 0) {
System.out.println("Barcode found: " + signatures.get(0).getText());
}
बारकोड सिग्नेचर के वास्तविक‑दुनिया उपयोग केस
आइए देखें कि यह तकनीक प्रोडक्शन सिस्टम में कहाँ चमकती है:
1. सर्टिफ़िकेट जेनरेशन और वेरिफ़िकेशन
Scenario: आप एक ट्रेनिंग प्लेटफ़ॉर्म बना रहे हैं जो पूर्णता सर्टिफ़िकेट जारी करता है।
Implementation: एक यूनिक सर्टिफ़िकेट ID (जैसे “CERT‑2024‑00123”) जेनरेट करें और इसे PDF के नीचे‑दाएँ कोने में Code128 बारकोड के रूप में एम्बेड करें। बारकोड स्कैन करने से आपका API तुरंत सर्टिफ़िकेट डिटेल्स रिट्रीव कर लेता है, मैन्युअल डेटा एंट्री समाप्त हो जाती है।
2. इनवॉइस ट्रैकिंग सिस्टम
Scenario: आपका कंपनी महीने में हजारों इनवॉइस प्रोसेस करता है।
Implementation: इनवॉइस नंबर और ड्यू डेट को QR कोड के रूप में जोड़ें जहाँ स्कैनिंग उपकरण आसानी से पढ़ सके। ऑटोमैटेड सॉर्टिंग सिस्टम बिना मानव हस्तक्षेप के इनवॉइस को रूट कर सकता है, प्रोसेसिंग टाइम को घंटों से मिनटों में घटा देता है।
3. लीगल कॉन्ट्रैक्ट मैनेजमेंट
Scenario: एक लॉ फर्म को कॉन्ट्रैक्ट वर्ज़न और एम्मेंडमेंट ट्रैक करने की जरूरत है।
Implementation: प्रत्येक कॉन्ट्रैक्ट वर्ज़न को एक यूनिक बारकोड आइडेंटिफ़ायर दें जिसमें कॉन्ट्रैक्ट ID, वर्ज़न नंबर, और सिग्नेचर डेट शामिल हों। ऑडिट के दौरान स्कैन करने से पूरी वर्ज़न हिस्ट्री ऑटोमैटिकली लोड हो जाती है।
4. मेडिकल रिकॉर्ड्स सुरक्षा
Scenario: एक अस्पताल अनऑथराइज़्ड रिकॉर्ड एक्सेस को रोकना चाहता है।
Implementation: रोगी ID और रिकॉर्ड क्रिएशन टाइमस्टैम्प को बारकोड में एम्बेड करें। केवल ऑथराइज़्ड डिवाइस ही डिकोड कर पूरी रिकॉर्ड एक्सेस कर सकते हैं, और हर स्कैन एक ऑडिट लॉग बनाता है जो कंप्लायंस के लिए जरूरी है।
प्रदर्शन अनुकूलन टिप्स (java document security)
जब आप बहुत सारे PDFs साइन कर रहे हों, प्रदर्शन महत्वपूर्ण है। यहाँ कुछ टिप्स हैं ताकि चीज़ें स्मूद चलें:
बैच प्रोसेसिंग स्ट्रैटेजी
एक बार में एक डॉक्यूमेंट साइन करने की बजाय, बैच में प्रोसेस करें:
for (String filePath : pdfList) {
Signature batchSignature = new Signature(filePath);
batchSignature.sign(outputPath, options);
batchSignature.close();
}
Why this helps: विकल्प ऑब्जेक्ट को री‑यूज़ करने और रिसोर्सेज़ को सही ढंग से क्लोज़ करने से मेमोरी लीक नहीं होते।
बड़े PDFs के लिए मेमोरी मैनेजमेंट
50 MB से बड़े PDFs के लिए:
- उन्हें एक‑एक करके प्रोसेस करें, एक साथ कई लोड न करें।
try‑with‑resourcesका उपयोग करके क्लीन‑अप सुनिश्चित करें।- हीप साइज मॉनिटर करें और JVM पैरामीटर समायोजित करें यदि जरूरत हो:
-Xmx2g।
अक्सर उपयोग किए जाने वाले बारकोड को कैश करना
यदि आप कई डॉक्यूमेंट्स में एक ही बारकोड साइन कर रहे हैं, तो BarcodeSignOptions इंस्टेंस को कैश करें:
BarcodeSignOptions cachedOptions = new BarcodeSignOptions("STATIC_ID");
cachedOptions.setEncodeType(BarcodeEncodeType.Code128);
कब बारकोड सिग्नेचर उपयोग करें (और कब नहीं)
परफेक्ट सीनारियो:
- आपको मशीन‑रीडेबल डॉक्यूमेंट आइडेंटिफ़ायर चाहिए।
- दस्तावेज़ स्वचालित रूप से स्कैन या प्रोसेस किए जाएंगे।
- आप डिजिटल सर्टिफ़िकेट्स के बिना टैम्पर‑इविडेंट ट्रैकिंग चाहते हैं।
- मौजूदा बारकोड इन्फ्रास्ट्रक्चर के साथ इंटीग्रेशन आवश्यक है।
जब नहीं उपयोग करना चाहिए:
- आपको कानूनी रूप से बाइंडिंग डिजिटल सिग्नेचर चाहिए (उसके लिए डिजिटल सर्टिफ़िकेट्स उपयोग करें)।
- दस्तावेज़ केवल मानव द्वारा देखे जाएंगे (साधारण टेक्स्ट वॉटरमार्क पर्याप्त हो सकता है)।
- दस्तावेज़ बहुत छोटा है जहाँ बारकोड पेज को डॉमिनेट कर देगा।
- सुरक्षा आवश्यकताएँ एन्क्रिप्शन माँगती हैं—बारकोड विज़िबल और किसी भी के लिए स्कैन करने योग्य होते हैं।
क्या आप दोनों अप्रोच को कॉम्बाइन कर सकते हैं? बिल्कुल! कई सिस्टम दोनों बारकोड सिग्नेचर ट्रैकिंग के लिए और डिजिटल सिग्नेचर लीगल वैधता के लिए उपयोग करते हैं।
अक्सर पूछे जाने वाले प्रश्न
Q: क्या मैं एक ही PDF में विभिन्न बारकोड टाइप उपयोग कर सकता हूँ?
A: हाँ! signature.sign() को कई बार कॉल करें विभिन्न BarcodeSignOptions के साथ। बस यह सुनिश्चित करें कि वे ओवरलैप न हों।
Q: मैं बारकोड में स्पेशल कैरेक्टर्स कैसे हैंडल करूँ?
A: Code128 अधिकांश ASCII कैरेक्टर्स को संभालता है। यूनिकोड या जटिल डेटा के लिए QR कोड इस्तेमाल करें—वे UTF‑8 एन्कोडिंग सपोर्ट करते हैं।
Q: Code128 बारकोड में अधिकतम कितना डेटा स्टोर कर सकता हूँ?
A: तकनीकी रूप से 128 कैरेक्टर तक, लेकिन 30‑40 कैरेक्टर से ऊपर पढ़ने की क्षमता काफी घट जाती है। बड़े पेलोड के लिए QR कोड उपयोग करें।
Q: क्या बारकोड जोड़ने से PDF फ़ाइल साइज में काफी बढ़ोतरी होगी?
A: नहीं—बारकोड वेक्टर ग्राफ़िक्स होते हैं, आमतौर पर प्रत्येक बारकोड में केवल 5‑20 KB जोड़ते हैं, साइज पर न्यूनतम प्रभाव।
Q: क्या मैं बारकोड को रोटेट कर सकता हूँ या वर्टिकली रख सकता हूँ?
A: हाँ! options.setRotationAngle(90) का उपयोग करके बारकोड को रोटेट करें, जो मार्जिन प्लेसमेंट के लिए उपयोगी है।
Q: मैं कैसे सुनिश्चित करूँ कि बारकोड मल्टी‑पेज PDF के हर पेज पर दिखे?
A: पेजेज़ पर इटररेट करें और प्रत्येक पर सिग्नेचर लागू करें। कौन से पेज साइन होंगे, इसे कंट्रोल करने के लिए GroupDocs डॉक्यूमेंटेशन में PagesSetup क्लास देखें।
Q: अगर मेरा बारकोड स्कैनर जेनरेटेड बारकोड नहीं पढ़ पा रहा है तो क्या करें?
A: पहले यह वेरिफ़ाई करें कि स्कैनर चुने हुए बारकोड टाइप को सपोर्ट करता है। फिर बारकोड साइज बढ़ाएँ—अधिकांश स्कैनिंग इश्यू छोटे बार्स के कारण होते हैं। विश्वसनीय रीडिंग के लिए कम से कम 1 इंच (2.54 सेमी) चौड़ाई लक्ष्य रखें।
अतिरिक्त संसाधन
दस्तावेज़ीकरण:
डाउनलोड और लाइसेंसिंग:
कम्युनिटी और सपोर्ट:
- Support Forum - सक्रिय कम्युनिटी जिसमें GroupDocs इंजीनियर्स भी हैं
अंतिम अपडेट: 2026-07-20
परीक्षित संस्करण: GroupDocs.Signature 23.12 (Java)
लेखक: GroupDocs
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
implementation 'com.groupdocs:groupdocs-signature:23.12'
import com.groupdocs.signature.Signature;
public class QuickTest {
public static void main(String[] args) {
try {
Signature signature = new Signature("test-document.pdf");
System.out.println("GroupDocs.Signature is ready to go!");
} catch (Exception e) {
System.err.println("Setup issue: " + e.getMessage());
}
}
}
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
Signature signature = new Signature(filePath);
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;
BarcodeSignOptions options = new BarcodeSignOptions("12345678");
options.setEncodeType(BarcodeTypes.Code128);
import com.groupdocs.signature.domain.enums.MeasureType;
import com.groupdocs.signature.domain.Padding;
// Use percentages instead of fixed pixels
options.setLocationMeasureType(MeasureType.Percents);
options.setLeft(5); // 5% from the left edge
options.setTop(5); // 5% from the top
// Size it proportionally too
options.setSizeMeasureType(MeasureType.Percents);
options.setWidth(10); // 10% of page width
options.setHeight(5); // 5% of page height
// Add some breathing room with margins
Padding margins = new Padding();
margins.setLeft(1);
margins.setTop(1);
margins.setRight(1);
options.setMargin(margins);
String outputFilePath = "YOUR_OUTPUT_DIRECTORY/SignWithPercents/sample_signed.pdf";
signature.sign(outputFilePath, options);
Path outputPath = Paths.get(outputFilePath);
Files.createDirectories(outputPath.getParent());
signature.sign(outputFilePath, options);
try {
signature.sign(outputFilePath, options);
System.out.println("PDF signed successfully at: " + outputFilePath);
} catch (Exception e) {
System.err.println("Signing failed: " + e.getMessage());
e.printStackTrace();
}
options.setLocationMeasureType(MeasureType.Percents);
options.setLeft(5); // 5% from left works on any page width
options.setWidth(10); // Give it room to breathe
options.setHeight(5); // Maintain proper aspect ratio
String filePath = "documents/sample.pdf"; // Works on Windows, Mac, Linux
Files.createDirectories(Paths.get("output/signed"));
try (Signature signature = new Signature(filePath)) {
signature.sign(outputFilePath, options);
} // Automatically closes and releases memory
import org.junit.Test;
import static org.junit.Assert.*;
public class BarcodeSignatureTest {
@Test
public void testBarcodeSigning() {
String testPdf = "test-data/sample.pdf";
String output = "test-output/signed.pdf";
try (Signature signature = new Signature(testPdf)) {
BarcodeSignOptions options = new BarcodeSignOptions("TEST123");
options.setEncodeType(BarcodeTypes.Code128);
signature.sign(output, options);
// Verify output file exists
assertTrue(new File(output).exists());
// Verify file size increased (signature was added)
long originalSize = new File(testPdf).length();
long signedSize = new File(output).length();
assertTrue(signedSize > originalSize);
} catch (Exception e) {
fail("Signing should not throw exception: " + e.getMessage());
}
}
}
List<String> pdfFiles = Arrays.asList("doc1.pdf", "doc2.pdf", "doc3.pdf");
for (String pdfFile : pdfFiles) {
try (Signature signature = new Signature(pdfFile)) {
BarcodeSignOptions options = createBarcodeOptions(); // Reuse options
signature.sign(getOutputPath(pdfFile), options);
}
}
// Create options once, reuse many times
BarcodeSignOptions templateOptions = createStandardBarcodeOptions();
// For each document, clone and customize
BarcodeSignOptions documentOptions = templateOptions.clone();
documentOptions.setText(uniqueDocumentId);