Search Barcode Specific Pages in Documents Using Java
परिचय
क्या आपने कभी सैकड़ों दस्तावेज़ों में हस्ताक्षरों को मैन्युअल रूप से सत्यापित करने में घंटे बिताए हैं? आप अकेले नहीं हैं। चाहे आप एक अनुबंध प्रबंधन प्रणाली बना रहे हों, इनवॉइस प्रोसेसिंग को स्वचालित कर रहे हों, या स्वास्थ्य रिकॉर्ड को सुरक्षित कर रहे हों, बारकोड हस्ताक्षरों को मैन्युअल रूप से ट्रैक करना और सत्यापित करना थकाऊ और त्रुटिप्रवण है।
इस गाइड में हम आपको जावा और 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 प्रदान करता है जो लो‑लेवल बारकोड डिकोडिंग, पेज रेंडरिंग, और दस्तावेज़ फ़ॉर्मेट हैंडलिंग को एब्स्ट्रैक्ट करता है। यह PDF, DOCX, XLSX और कई अन्य फ़ॉर्मेट के साथ बॉक्स से बाहर काम करता है, जिससे आप फ़ाइल पार्सिंग के बजाय बिज़नेस लॉजिक पर ध्यान केंद्रित कर सकते हैं।
पूर्वापेक्षाएँ
- 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 डाउनलोड पेज से नवीनतम रिलीज़ प्राप्त कर सकते हैं।
अपना लाइसेंस प्राप्त करना
- फ्री ट्रायल – तुरंत शुरू करें, कोई प्रतिबद्धता नहीं
- टेम्पररी लाइसेंस – मूल्यांकन के लिए पूर्ण फीचर एक्सेस
- फुल लाइसेंस – प्रोडक्शन‑रेडी, अनलिमिटेड उपयोग
इंस्टॉलेशन को एक त्वरित इनिशियलाइज़ेशन स्निपेट से सत्यापित करें:
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.");
}
}
प्रो टिप:
"YOUR_DOCUMENT_PATH"को वास्तविक PDF, DOCX, या XLSX फ़ाइल से बदलें। यदि कंसोल सफलता संदेश प्रिंट करता है, तो आप तैयार हैं।
बारकोड सिग्नेचर प्रकारों को समझना
बारकोड दस्तावेज़ के भीतर मशीन‑रीडेबल डेटा एम्बेड करते हैं। हस्तलिखित हस्ताक्षरों के विपरीत, वे IDs, टाइमस्टैम्प, URLs, या JSON पेलोड स्टोर कर सकते हैं, जिससे वे स्वचालित सत्यापन के लिए आदर्श होते हैं।
| बारकोड प्रकार | सर्वोत्तम उपयोग | सामान्य डेटा लंबाई |
|---|---|---|
| QR Code | उच्च‑घनत्व डेटा, URLs, मल्टी‑लाइन टेक्स्ट | अधिकतम 4,296 अक्षर |
| Code128 | अल्फ़ान्यूमेरिक ट्रैकिंग नंबर | परिवर्तनीय |
| Code39 | सरल लेगेसी कोड | अधिकतम 43 अक्षर |
| DataMatrix | छोटे लेबल, हेल्थकेयर रिकॉर्ड | अधिकतम 2,335 अक्षर |
| EAN/UPC | उत्पाद पहचान, रिटेल | 8‑13 अंक |
आप अक्सर बारकोड का उपयोग करेंगे जब आपको तेज़ मशीन रीडिंग, संरचित डेटा, या छेड़छाड़‑प्रूफ़ साइनिंग की आवश्यकता हो।
बारकोड विशिष्ट पृष्ठों की खोज कैसे करें
हम कार्यान्वयन को तीन केंद्रित फीचर्स में विभाजित करेंगे।
फीचर 1: डॉक्यूमेंट सर्च इवेंट्स की सदस्यता लेना
क्यों यह महत्वपूर्ण है
बड़े बैच प्रोसेसिंग में, वास्तविक‑समय फीडबैक (जैसे प्रोग्रेस बार) UX को सुधारता है और आपको शुरुआती स्टॉल का पता लगाने में मदद करता है।
कार्यान्वयन
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 % तक घट सकता है।
कार्यान्वयन
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");
- मैच टाइप्स आपको टेक्स्ट सर्च को फाइन‑ट्यून करने देते हैं (
Contains,Exact,StartsWith,EndsWith). setAllPagesऔरPagesSetupको समायोजित करके केवल बारकोड विशिष्ट पृष्ठों की खोज करें।
फीचर 3: खोज को निष्पादित करना और परिणामों को प्रोसेस करना
क्यों यह चरण महत्वपूर्ण है
बारकोड ढूँढना केवल आधा हिस्सा है—आपको डेटा पर कार्रवाई करनी होगी (जैसे वैलिडेट, स्टोर, या वर्कफ़्लो ट्रिगर करना)।
कार्यान्वयन
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 ऑब्जेक्ट्स की एक सूची है, प्रत्येक निम्नलिखित प्रदान करता है:
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 शिपमेंट IDs खोजें |
| हेल्थकेयर कंसेंट फॉर्म | अंतिम कंसेंट पृष्ठ से DataMatrix रोगी IDs निकालें |
| इनवॉइस ऑटोमेशन | इनवॉइस में कहीं भी “APPR‑” प्रीफ़िक्स वाले बारकोड खोजें, फिर रूट करें |
सामान्य समस्याएँ और समाधान
Issue 1 – No results despite visible barcodes
// Ensure you are not limiting pages too aggressively
options.setAllPages(true);
यदि बारकोड रास्टर इमेज के रूप में एम्बेडेड है, तो इमेज‑आधारित डिटेक्शन के लिए GroupDocs.Image का उपयोग करने पर विचार करें।
Issue 2 – Slow performance on large files
PagesSetup pagesSetup = new PagesSetup();
pagesSetup.setLastPage(true); // Most signatures are on the last page
pagesSetup.setFirstPage(true);
options.setPagesSetup(pagesSetup);
लक्षित पृष्ठ प्रोसेसिंग समय को काफी घटाते हैं।
Issue 3 – TextMatchType not finding expected barcodes
String searchText = "12345".trim().toLowerCase();
options.setText(searchText);
options.setMatchType(TextMatchType.StartsWith); // Try a more permissive mode
TextMatchType अपेक्षित बारकोड नहीं खोज रहा है।
Issue 4 – Memory leaks in long‑running loops
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
}
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: क्या मैं एक कॉल में कई बारकोड फ़ॉर्मेट की खोज कर सकता हूँ?
उत्तर: हाँ। BarcodeSearchOptions डिफ़ॉल्ट रूप से सभी समर्थित फ़ॉर्मेट खोजता है। यदि आपको केवल विशिष्ट प्रकार चाहिए तो getEncodeType() द्वारा परिणाम फ़िल्टर करें।
प्रश्न: मैं उन दस्तावेज़ों को कैसे हैंडल करूँ जिनमें बारकोड और इमेज सिग्नेचर दोनों हैं?
उत्तर: अलग-अलग खोज चलाएँ—बारकोड के लिए BarcodeSignature.class और इमेज सिग्नेचर के लिए ImageSignature.class उपयोग करें, फिर आवश्यकतानुसार परिणामों को संयोजित करें।
प्रश्न: सभी पृष्ठों की खोज बनाम विशिष्ट पृष्ठों की खोज का प्रदर्शन प्रभाव क्या है?
उत्तर: 50‑पृष्ठीय PDF के सभी पृष्ठ स्कैन करने में 3–5 सेकंड लग सकते हैं। पहले + अंतिम पृष्ठों तक सीमित करने से आमतौर पर 1 सेकंड से कम समय में समाप्त हो जाता है।
प्रश्न: क्या यह स्कैन किए गए PDFs (रास्टर इमेज) के साथ काम करता है?
उत्तर: केवल तभी जब बारकोड डिजिटल सिग्नेचर ऑब्जेक्ट के रूप में जोड़ा गया हो। रास्टर‑केवल बारकोड के लिए, आपको इमेज‑आधारित बारकोड रिकग्नाइज़र की आवश्यकता होगी (जैसे, GroupDocs.Barcode)।
प्रश्न: मैं कैसे सत्यापित करूँ कि बारकोड सिग्नेचर में छेड़छाड़ नहीं हुई है?
उत्तर: बारकोड पेलोड के भीतर एक हैश या डिजिटल सिग्नेचर एम्बेड करें, फिर मूल डेटा पर हैश पुनः गणना करें और तुलना करें। इसके लिए मूल साइनिंग कुंजी या प्रमाणपत्र आवश्यक है।
अंतिम अपडेट: 2026-01-29
परीक्षित संस्करण: GroupDocs.Signature 23.12 for Java
लेखक: GroupDocs