जावा का उपयोग करके दस्तावेज़ों में बारकोड विशिष्ट पृष्ठों की खोज
परिचय
क्या आपने कभी सैकड़ों दस्तावेज़ों में हस्ताक्षरों को मैन्युअल रूप से सत्यापित करने में घंटों बिताए हैं? आप अकेले नहीं हैं। चाहे आप एक अनुबंध प्रबंधन प्रणाली बना रहे हों, इनवॉइस प्रोसेसिंग को स्वचालित कर रहे हों, या स्वास्थ्य रिकॉर्ड को सुरक्षित कर रहे हों, बारकोड हस्ताक्षरों को मैन्युअल रूप से ट्रैक करना और सत्यापित करना थकाऊ और त्रुटिप्रवण होता है। इस ट्यूटोरियल में आप सीखेंगे कि GroupDocs.Signature के साथ जावा में बारकोड पृष्ठों की खोज कैसे करें, ताकि आप प्रोग्रामेटिक रूप से केवल आवश्यक पृष्ठों को लक्षित कर सकें, वास्तविक समय में प्रगति की निगरानी कर सकें, और कुछ ही जावा कोड लाइनों के साथ विभिन्न बारकोड फ़ॉर्मेट को संभाल सकें।
आप क्या सीखेंगे
- जावा प्रोजेक्ट में GroupDocs.Signature सेट अप करना (≈5 मिनट)
- रियल‑टाइम प्रगति ट्रैकिंग के लिए सर्च इवेंट्स की सदस्यता लेना
- विशिष्ट पृष्ठों को लक्षित करने के लिए स्मार्ट सर्च विकल्प कॉन्फ़िगर करना
- सर्च को निष्पादित करना और परिणामों को कुशलतापूर्वक प्रोसेस करना
त्वरित उत्तर
- कौन सी लाइब्रेरी आपको बारकोड विशिष्ट पृष्ठों की खोज में मदद करती है? GroupDocs.Signature for Java
- सामान्य सेटअप समय? Maven/Gradle निर्भरता और लाइसेंस जोड़ने में लगभग 5 मिनट
- क्या मैं खोज को पहले और अंतिम पृष्ठों तक सीमित कर सकता हूँ? हाँ – सटीक पृष्ठ निर्दिष्ट करने के लिए
PagesSetupका उपयोग करें - कौन से बारकोड फ़ॉर्मेट समर्थित हैं? QR Code, Code128, Code39, DataMatrix, EAN/UPC, और अधिक
- क्या उत्पादन के लिए मुझे भुगतान वाली लाइसेंस की आवश्यकता है? उत्पादन के लिए पूर्ण लाइसेंस आवश्यक है; मूल्यांकन के लिए ट्रायल काम करता है
“बारकोड विशिष्ट पृष्ठों की खोज” क्या है?
बारकोड विशिष्ट पृष्ठों की खोज का अर्थ है सिग्नेचर इंजन को केवल उन पृष्ठों पर बारकोड सिग्नेचर खोजने के लिए निर्देश देना जिनमें आपकी रुचि है—जैसे पहला पृष्ठ, अंतिम पृष्ठ, या कोई कस्टम रेंज। यह केंद्रित दृष्टिकोण प्रोसेसिंग को तेज़ करता है, मेमोरी उपयोग को घटाता है, और आपको प्रतिक्रियाशील UI फ़ीडबैक बनाने की अनुमति देता है।
इस कार्य के लिए GroupDocs.Signature क्यों उपयोग करें?
GroupDocs.Signature एक हाई‑लेवल API प्रदान करता है जो लो‑लेवल बारकोड डिकोडिंग, पेज रेंडरिंग, और दस्तावेज़ फ़ॉर्मेट हैंडलिंग को एब्स्ट्रैक्ट करता है। यह 20 से अधिक बारकोड फ़ॉर्मेट का समर्थन करता है और सैकड़ों‑पृष्ठ वाले दस्तावेज़ों को पूरी फ़ाइल को मेमोरी में लोड किए बिना प्रोसेस कर सकता है, जिससे आप फ़ाइल पार्सिंग के बजाय बिज़नेस लॉजिक पर ध्यान केंद्रित कर सकते हैं।
पूर्वापेक्षाएँ
- JDK 8+ स्थापित है
- Maven या Gradle निर्भरता प्रबंधन के लिए
- जावा क्लास, मेथड और एक्सेप्शन हैंडलिंग की बुनियादी समझ
- GroupDocs.Signature लाइसेंस (ट्रायल या पूर्ण) तक पहुंच
जावा के लिए 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 डाउनलोड पेज से प्राप्त कर सकते हैं।
अपना लाइसेंस प्राप्त करना
- Free Trial – तुरंत शुरू करें, कोई प्रतिबद्धता नहीं
- Temporary License – मूल्यांकन के लिए पूर्ण फीचर एक्सेस
- Full License – प्रोडक्शन‑रेडी, असीमित उपयोग
एक त्वरित इनिशियलाइज़ेशन स्निपेट के साथ इंस्टॉलेशन को सत्यापित करें:
import com.groupdocs.signature.Signature;
public class SignatureSetup {
public static void main(String[] args) {
// Initialize the Signature instance with the document path
Signature signature = new Signature("YOUR_DOCUMENT_PATH");
System.out.println("GroupDocs.Signature for Java initialized successfully.");
}
}
Pro tip:
"YOUR_DOCUMENT_PATH"को वास्तविक PDF, DOCX, या XLSX फ़ाइल से बदलें। यदि कंसोल सफलता संदेश प्रिंट करता है, तो आप तैयार हैं।
बारकोड सिग्नेचर प्रकारों को समझना
बारकोड दस्तावेज़ के भीतर मशीन‑रीडेबल डेटा एम्बेड करते हैं। हस्तलिखित सिग्नेचर के विपरीत, वे IDs, टाइमस्टैम्प, URLs, या JSON पेलोड संग्रहीत कर सकते हैं, जिससे वे स्वचालित सत्यापन के लिए आदर्श होते हैं।
| बारकोड प्रकार | सर्वोत्तम उपयोग | सामान्य डेटा लंबाई |
|---|---|---|
| QR Code | उच्च घनत्व डेटा, URLs, बहु‑लाइन टेक्स्ट | अधिकतम 4,296 अक्षर |
| Code128 | अल्फ़ान्यूमेरिक ट्रैकिंग नंबर | परिवर्तनीय |
| Code39 | सरल लेगेसी कोड | अधिकतम 43 अक्षर |
| DataMatrix | छोटे लेबल, स्वास्थ्य रिकॉर्ड | अधिकतम 2,335 अक्षर |
| EAN/UPC | उत्पाद पहचान, रिटेल | 8‑13 अंक |
आप अक्सर बारकोड का उपयोग तब करेंगे जब आपको तेज़ मशीन रीडिंग, संरचित डेटा, या टैंपर‑इविडेंट साइनिंग की आवश्यकता हो।
जावा में बारकोड पृष्ठों की खोज कैसे करें?
Signature वह मुख्य क्लास है जो प्रोसेस किए जाने वाले दस्तावेज़ का प्रतिनिधित्व करती है। अपने दस्तावेज़ को new Signature("file.pdf") से लोड करें, BarcodeSearchOptions बारकोड सिग्नेचर खोज के पैरामीटर निर्धारित करता है, इसे इच्छित पृष्ठों को लक्षित करने के लिए कॉन्फ़िगर करें, और signature.search(options) को कॉल करें। search मेथड प्रदान किए गए विकल्पों के साथ खोज ऑपरेशन चलाता है। इंजन BarcodeSignature ऑब्जेक्ट्स की सूची लौटाता है जिसमें पेज नंबर, डिकोडेड टेक्स्ट, और ज्योमेट्रिक कोऑर्डिनेट्स शामिल होते हैं—सभी एक ही कॉल में। यह एक‑स्टेप पैटर्न अलग‑अलग इमेज एक्सट्रैक्शन या कस्टम डिकोडिंग लॉजिक की आवश्यकता को समाप्त करता है।
अब जब आप समग्र प्रवाह समझ गए हैं, चलिए उन तीन मुख्य फ़ीचर्स में डुबकी लगाते हैं जिन्हें आप लागू करेंगे।
फ़ीचर 1: दस्तावेज़ सर्च इवेंट्स की सदस्यता लेना
यह क्यों महत्वपूर्ण है
बड़े बैच प्रोसेसिंग में रियल‑टाइम फ़ीडबैक (जैसे प्रोग्रेस बार) UX को बेहतर बनाता है और आपको स्टॉल का जल्दी पता लगाने में मदद करता है।
परिभाषा एंकर
Signature दस्तावेज़ का प्रतिनिधित्व करता है और इवेंट सब्सक्रिप्शन क्षमताएँ प्रदान करता है।
Implementation
Signature signature = new Signature("YOUR_DOCUMENT_PATH");
signature.SearchStarted.add(new ProcessStartEventHandler() {
public void invoke(Signature sender, ProcessStartEventArgs args) {
System.out.println("Search process started at " + args.getStarted()
+ " with " + args.getTotalSignatures() + " total signatures to be put in document");
}
});
signature.SearchProgress.add(new ProcessProgressEventHandler() {
public void invoke(Signature sender, ProcessProgressEventArgs args) {
System.out.println("Search progress. Processed " + args.getProcessedSignatures()
+ " signatures. Time spent " + args.getTicks() + " mlsec");
}
});
signature.SearchCompleted.add(new ProcessCompleteEventHandler() {
public void invoke(Signature sender, ProcessCompleteEventArgs args) {
System.out.println("Search process completed at " + args.getCompleted()
+ " with " + args.getTotalSignatures() + " total signatures. Process took "
+ args.getTicks() + " mlsec");
}
});
ये तीन हैंडलर आपको शुरूआती समय, लाइव प्रोग्रेस, और अंतिम आँकड़े देते हैं—लॉगिंग या UI अपडेट के लिए परफेक्ट।
फ़ीचर 2: विशिष्ट पृष्ठों के लिए बारकोड सर्च विकल्प कॉन्फ़िगर करना
सूक्ष्म नियंत्रण क्यों महत्वपूर्ण है
200‑पृष्ठ वाले अनुबंध के हर पृष्ठ को स्कैन करने से CPU साइकिल बर्बाद होते हैं। केवल पहले और अंतिम पृष्ठों को लक्षित करने से रनटाइम 80 % तक घट सकता है।
परिभाषा एंकर
PagesSetup निर्धारित करता है कि खोज ऑपरेशन में कौन‑से पृष्ठ शामिल हैं।
Implementation
import com.groupdocs.signature.domain.enums.TextMatchType;
import com.groupdocs.signature.options.search.BarcodeSearchOptions;
BarcodeSearchOptions options = new BarcodeSearchOptions();
options.setAllPages(false); // Opt‑in selective page searching
options.setPageNumber(1); // Starting page (optional)
import com.groupdocs.signature.options.PagesSetup;
PagesSetup pagesSetup = new PagesSetup();
pagesSetup.setFirstPage(true); // Include first page
pagesSetup.setLastPage(true); // Include last page
pagesSetup.setOddPages(false); // Skip odd pages
pagesSetup.setEvenPages(false); // Skip even pages
options.setPagesSetup(pagesSetup);
options.setMatchType(TextMatchType.Contains);
options.setText("12345");
- Match types आपको टेक्स्ट सर्च को फाइन‑ट्यून करने देता है (
Contains,Exact,StartsWith,EndsWith)। setAllPagesऔरPagesSetupको समायोजित करें ताकि केवल बारकोड विशिष्ट पृष्ठों की खोज की जा सके।
फ़ीचर 3: सर्च को निष्पादित करना और परिणामों को प्रोसेस करना
यह चरण क्यों महत्वपूर्ण है
बारकोड ढूँढ़ना केवल आधा काम है—आपको डेटा पर कार्रवाई करनी होती है (जैसे वैधता जांच, स्टोरेज, या वर्कफ़्लो ट्रिगर)।
परिभाषा एंकर
BarcodeSignature एक डिटेक्टेड बारकोड का प्रतिनिधित्व करता है और इसमें पेज नंबर और डिकोडेड टेक्स्ट जैसी प्रॉपर्टीज़ होती हैं।
Implementation
import java.util.List;
import com.groupdocs.signature.domain.signatures.BarcodeSignature;
try {
List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, options);
System.out.println("Source document contains following signatures.");
for (BarcodeSignature barcodeSignature : signatures) {
System.out.println("Barcode signature found at page " + barcodeSignature.getPageNumber()
+ " with type " + barcodeSignature.getEncodeType() + " and text " + barcodeSignature.getText());
}
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
अब आपके पास BarcodeSignature ऑब्जेक्ट्स की एक सूची है, प्रत्येक exposing:
getPageNumber()– जहाँ बारकोड स्थित हैgetEncodeType()– QR, Code128, आदिgetText()– डिकोडेड पेलोड- स्थिति (
getLeft(),getTop()) और आकार (getWidth(),getHeight())
उदाहरण: अंतिम पृष्ठ पर केवल QR कोड प्रोसेस करें
for (BarcodeSignature barcodeSignature : signatures) {
if (barcodeSignature.getPageNumber() == lastPageNumber
&& barcodeSignature.getEncodeType().equals("QRCode")) {
// Process only QR codes from the final page
processApprovalCode(barcodeSignature.getText());
}
}
वास्तविक‑विश्व अनुप्रयोग
| परिदृश्य | बारकोड‑विशिष्ट‑पृष्ठ खोज कैसे मदद करती है |
|---|---|
| कानूनी अनुबंध सत्यापन | हस्ताक्षर पृष्ठ पर QR‑एन्कोडेड प्रमाणपत्र हैश को स्वचालित रूप से सत्यापित करें |
| सप्लाई‑चेन ट्रैकिंग | मैनिफेस्ट के पहले/अंतिम पृष्ठों पर Code128 शिपमेंट आईडी खोजें |
| स्वास्थ्य देखभाल सहमति फ़ॉर्म | अंतिम सहमति पृष्ठ से DataMatrix रोगी आईडी निकालें |
| इनवॉइस ऑटोमेशन | इनवॉइस में कहीं भी “APPR‑” प्रीफ़िक्स वाले बारकोड खोजें, फिर रूट करें |
सामान्य समस्याएँ और समाधान
समस्या 1 – दृश्यमान बारकोड होने के बावजूद कोई परिणाम नहीं
// Ensure you are not limiting pages too aggressively
options.setAllPages(true);
यदि बारकोड रास्टर इमेज के रूप में एम्बेड है, तो इमेज‑आधारित डिटेक्शन के लिए GroupDocs.Image का उपयोग करने पर विचार करें।
समस्या 2 – बड़े फ़ाइलों पर धीमी प्रदर्शन
PagesSetup pagesSetup = new PagesSetup();
pagesSetup.setLastPage(true); // Most signatures are on the last page
pagesSetup.setFirstPage(true);
options.setPagesSetup(pagesSetup);
लक्षित पृष्ठ प्रोसेसिंग समय को नाटकीय रूप से घटाते हैं; दो पृष्ठों तक खोज सीमित करने पर 150‑पृष्ठ PDF का समय ~4 सेकंड से <1 सेकंड तक घट जाता है।
समस्या 3 – TextMatchType अपेक्षित बारकोड नहीं ढूँढ़ रहा
String searchText = "12345".trim().toLowerCase();
options.setText(searchText);
options.setMatchType(TextMatchType.StartsWith); // Try a more permissive mode
समस्या 4 – लंबी‑चलाने वाले लूप्स में मेमोरी लीक
try (Signature signature = new Signature("document.pdf")) {
List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, options);
// Process signatures
}
try‑with‑resources ब्लॉक Signature इंस्टेंस को स्वचालित रूप से डिस्पोज़ कर देता है।
उत्पादन के लिए सर्वोत्तम प्रथाएँ
मजबूत त्रुटि हैंडलिंग
try {
List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, options);
} catch (com.groupdocs.signature.exception.GroupDocsSignatureException e) {
logger.error("GroupDocs error: " + e.getMessage());
} catch (Exception e) {
logger.error("Unexpected error: " + e.getMessage(), e);
}
जब दस्तावेज़ अपरिवर्तनीय हों तो परिणाम कैश करें
Map<String, List<BarcodeSignature>> cache = new ConcurrentHashMap<>();
public List<BarcodeSignature> getCachedSignatures(String docId) {
return cache.computeIfAbsent(docId, id -> performSearch(id));
}
UI फ़ीडबैक के लिए प्रोग्रेस इवेंट्स का उपयोग करें
signature.SearchProgress.add(new ProcessProgressEventHandler() {
public void invoke(Signature sender, ProcessProgressEventArgs args) {
int percent = (args.getProcessedSignatures() * 100) / args.getTotalSignatures();
updateProgressBar(percent);
}
});
बारकोड पेलोड को वैध करें
for (BarcodeSignature barcodeSignature : signatures) {
String text = barcodeSignature.getText();
if (!text.matches("APPR-\\d{4}-\\d{3}")) {
logger.warn("Invalid format: " + text);
continue;
}
if (!validateChecksum(text)) {
logger.error("Checksum failed for: " + text);
flagForManualReview(document);
}
}
प्रति दस्तावेज़ प्रकार पृष्ठ चयन को अनुकूलित करें
PagesSetup contractsSetup = new PagesSetup();
contractsSetup.setLastPage(true); // Contracts usually signed on last page
options.setPagesSetup(contractsSetup);
खोज के बाद बारकोड प्रकार से फ़िल्टर करें (यदि आपको केवल QR कोड चाहिए)
for (BarcodeSignature sig : signatures) {
if ("QRCode".equals(sig.getEncodeType())) {
// Process QR code
}
}
बारकोड इमेज आयाम निकालें (यदि रेंडरिंग के लिए आवश्यक हो)
for (BarcodeSignature sig : signatures) {
int width = sig.getWidth();
int height = sig.getHeight();
// Use dimensions for overlay or thumbnail generation
}
अक्सर पूछे जाने वाले प्रश्न
Q: क्या मैं एक कॉल में कई बारकोड फ़ॉर्मेट की खोज कर सकता हूँ?
A: हाँ। BarcodeSearchOptions डिफ़ॉल्ट रूप से सभी समर्थित फ़ॉर्मेट खोजता है। यदि आपको केवल विशिष्ट प्रकार चाहिए तो getEncodeType() से परिणाम फ़िल्टर करें।
Q: मैं उन दस्तावेज़ों को कैसे हैंडल करूँ जिनमें बारकोड और इमेज सिग्नेचर दोनों हैं?
A: अलग‑अलग खोज चलाएँ—बारकोड के लिए BarcodeSignature.class और इमेज सिग्नेचर के लिए ImageSignature.class का उपयोग करें, फिर आवश्यकतानुसार परिणामों को संयोजित करें।
Q: सभी पृष्ठों की तुलना में विशिष्ट पृष्ठों की खोज का प्रदर्शन प्रभाव क्या है?
A: 50‑पृष्ठ PDF के हर पृष्ठ को स्कैन करने में 3–5 सेकंड लग सकते हैं। पहले + अंतिम पृष्ठों तक सीमित करने से आमतौर पर 1 सेकंड से कम समय लगता है।
Q: क्या यह स्कैन किए गए PDFs (रास्टर इमेज) के साथ काम करता है?
A: केवल तभी जब बारकोड डिजिटल सिग्नेचर ऑब्जेक्ट के रूप में जोड़ा गया हो। रास्टर‑केवल बारकोड के लिए आपको इमेज‑आधारित बारकोड रेकग्नाइज़र (जैसे GroupDocs.Barcode) की आवश्यकता होगी।
Q: मैं कैसे सत्यापित करूँ कि बारकोड सिग्नेचर में छेड़छाड़ नहीं हुई है?
A: बारकोड पेलोड के भीतर एक हैश या डिजिटल सिग्नेचर एम्बेड करें, फिर मूल डेटा पर हैश पुनः गणना करके तुलना करें। इसके लिए मूल साइनिंग कुंजी या प्रमाणपत्र आवश्यक होगा।
अंतिम अपडेट: 2026-06-21
परीक्षण किया गया: GroupDocs.Signature 23.12 for Java
लेखक: GroupDocs