साफ PDF Java बनाएं: GroupDocs के साथ अंडरलाइन एनोटेशन
यदि आपको साफ PDF Java फ़ाइलें बनानी हैं और सहयोगी एनोटेशन जोड़ने हैं, तो आप सही जगह पर हैं। अपने Java एप्लिकेशन में दस्तावेज़ प्रबंधन और सहयोग से जूझ रहे हैं? आप अकेले नहीं हैं। कई डेवलपर्स को विभिन्न फ़ाइल फ़ॉर्मेट में विश्वसनीय रूप से काम करने वाली मजबूत दस्तावेज़ एनोटेशन सुविधाएँ लागू करने की चुनौती का सामना करना पड़ता है।
इस गाइड में, आप साफ PDF Java फ़ाइलें बनाएँगे और GroupDocs.Annotation का उपयोग करके Java में PDF को एनोटेट करना सीखेंगे। इस ट्यूटोरियल के अंत तक, आप ठीक‑ठीक जानेंगे कि टिप्पणी के साथ अंडरलाइन एनोटेशन कैसे जोड़ें, मौजूदा एनोटेशन कैसे हटाएँ, और इन सुविधाओं को अपने प्रोजेक्ट में सहजता से कैसे एकीकृत करें।
इस गाइड में आप क्या सीखेंगे:
- अपने Java प्रोजेक्ट में GroupDocs.Annotation को सही तरीके से सेट‑अप करना
- कस्टम टिप्पणी और स्टाइलिंग के साथ अंडरलाइन एनोटेशन जोड़ना
- सभी एनोटेशन हटाकर साफ़ दस्तावेज़ संस्करण बनाना
- डेवलपर्स द्वारा अक्सर सामना किए जाने वाले सामान्य मुद्दों का समाधान
- प्रोडक्शन एप्लिकेशन के लिए प्रदर्शन अनुकूलन
चाहे आप दस्तावेज़ समीक्षा प्रणाली, शैक्षणिक प्लेटफ़ॉर्म, या सहयोगी संपादन टूल बना रहे हों, यह ट्यूटोरियल व्यावहारिक, परीक्षण किए गए कोड उदाहरणों के साथ आपका समर्थन करता है।
त्वरित उत्तर
- अंडरलाइन एनोटेशन कैसे जोड़ें?
UnderlineAnnotationऔरannotator.add()का उपयोग करें, फिर दस्तावेज़ को सहेजें। - साफ PDF Java फ़ाइल कैसे बनाएं? एनोटेटेड फ़ाइल लोड करें,
SaveOptionsमेंAnnotationType.NONEसेट करें, और नई कॉपी सहेजें। - कौन‑से लाइब्रेरी आवश्यक हैं? GroupDocs.Annotation v25.2 (या नया) और उसका Maven रिपॉज़िटरी।
- प्रोडक्शन के लिए लाइसेंस चाहिए? हाँ—वॉटरमार्क से बचने के लिए वैध GroupDocs लाइसेंस लागू करें।
- क्या कई दस्तावेज़ों को कुशलतापूर्वक प्रोसेस कर सकते हैं? प्रत्येक
Annotatorको try‑with‑resources ब्लॉक में रखें और प्रत्येक फ़ाइल के बाद डिस्पोज़ करें।
साफ PDF Java फ़ाइलें कैसे बनाएं
साफ PDF Java फ़ाइल बनाना मतलब दस्तावेज़ का ऐसा संस्करण उत्पन्न करना जिसमें कोई भी एनोटेशन न हो, जबकि मूल सामग्री बरकरार रहे। यह अंतिम वितरण, अभिलेखीय संग्रह, या समीक्षा चक्र के बाद “साफ़” कॉपी साझा करने के लिए उपयोगी है।
GroupDocs.Annotation इसे सरल बनाता है: एनोटेटेड फ़ाइल लोड करें, सभी एनोटेशन प्रकारों को बाहर रखने के लिए SaveOptions कॉन्फ़िगर करें, और परिणाम सहेजें। चरण बाद में एनोटेशन हटाने सेक्शन में दिखाए गए हैं।
साफ PDF Java फ़ाइलें क्यों बनाएं?
एक साफ़ संस्करण में समीक्षक के निशान, टिप्पणी और हाइलाइट हटाए जाते हैं, जिससे आपके पास एक पॉलिश्ड दस्तावेज़ रहता है जिसे क्लाइंट, नियामक या सार्वजनिक रिलीज़ के लिए तैयार किया जा सकता है। यह फ़ाइल आकार को भी घटाता है और आंतरिक नोट्स के अनजाने में खुलासे को रोकता है—क़ानूनी और अनुपालन वर्कफ़्लो के लिए महत्वपूर्ण।
GroupDocs के साथ Java में PDF को कैसे एनोटेट करें
GroupDocs.Annotation Java में PDF को एनोटेट करने के लिए एक समृद्ध API प्रदान करता है। यह हाइलाइट, स्टैम्प और अंडरलाइन सहित कई प्रकार के एनोटेशन को सपोर्ट करता है। इस ट्यूटोरियल में हम अंडरलाइन एनोटेशन पर ध्यान देंगे क्योंकि यह टेक्स्ट को ज़ोर देने के साथ थ्रेडेड टिप्पणी की सुविधा देता है।
पूर्वापेक्षाएँ और पर्यावरण सेट‑अप
शुरू करने से पहले आपको क्या चाहिए
डेवलपमेंट पर्यावरण आवश्यकताएँ:
- Java Development Kit (JDK) 8 या उससे ऊपर (JDK 11+ अनुशंसित)
- Maven 3.6+ या Gradle 6.0+ डिपेंडेंसी मैनेजमेंट के लिए
- IntelliJ IDEA, Eclipse, या Java एक्सटेंशन वाले VS Code जैसे IDE
- कम से कम 2 GB उपलब्ध RAM (दस्तावेज़ प्रोसेसिंग मेमोरी‑इंटेंसिव हो सकती है)
ज्ञान पूर्वापेक्षाएँ: आपको बेसिक Java कॉन्सेप्ट—ऑब्जेक्ट इनिशियलाइज़ेशन, मेथड कॉल, और Maven डिपेंडेंसी—में सहज होना चाहिए। थर्ड‑पार्टी लाइब्रेरी के साथ पूर्व अनुभव अपनाने की गति बढ़ाएगा।
टेस्टिंग दस्तावेज़: कुछ नमूना PDF तैयार रखें। टेक्स्ट‑आधारित PDF सबसे बेहतर काम करते हैं; स्कैन किए गए इमेज़ को एनोटेशन से पहले OCR की आवश्यकता हो सकती है।
Maven सेट‑अप: अपने प्रोजेक्ट में GroupDocs जोड़ें
यहाँ बताया गया है कि Maven प्रोजेक्ट को सही तरीके से कॉन्फ़िगर कैसे करें (पहली बार कई डेवलपर्स को यह कठिन लग सकता है):
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/annotation/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-annotation</artifactId>
<version>25.2</version>
</dependency>
</dependencies>
महत्वपूर्ण: लेखन के समय संस्करण 25.2 नवीनतम स्थिर रिलीज़ है। बग फिक्स और प्रदर्शन सुधारों के लिए नियमित रूप से GroupDocs रिपॉज़िटरी देखें।
लाइसेंस सेट‑अप (इसे न छोड़ें)
डेवलपमेंट/टेस्टिंग के लिए:
GroupDocs वेबसाइट से फ्री ट्रायल डाउनलोड करें। ट्रायल में सभी फीचर होते हैं लेकिन प्रोसेस किए गए दस्तावेज़ में वॉटरमार्क जोड़ता है।
प्रोडक्शन के लिए:
लाइसेंस खरीदें और एप्लिकेशन स्टार्टअप के दौरान लागू करें। वैध लाइसेंस के बिना प्रोडक्शन बिल्ड सीमित रहेगा।
इम्प्लीमेंटेशन गाइड: अंडरलाइन एनोटेशन जोड़ना
एनोटेशन वर्कफ़्लो को समझना
कोड में डुबने से पहले, चलिए चार‑स्टेप वर्कफ़्लो को देखते हैं जो Java में PDF को एनोटेट करते समय होता है:
- दस्तावेज़ लोडिंग –
Annotatorफ़ाइल को मेमोरी में पढ़ता है। - एनोटेशन निर्माण – पोज़िशन, स्टाइल और टिप्पणी जैसी प्रॉपर्टी परिभाषित करें।
- एनोटेशन एप्लिकेशन – लाइब्रेरी PDF की संरचना में एनोटेशन डालती है।
- दस्तावेज़ सहेजना – संशोधित फ़ाइल को स्थायी रूप से सहेजें, वैकल्पिक रूप से मूल को बरकरार रखें।
यह प्रक्रिया नॉन‑डिस्ट्रक्टिव है; स्रोत फ़ाइल तब तक अपरिवर्तित रहती है जब तक आप उसे ओवरराइट न करें।
चरण 1: Annotator को इनिशियलाइज़ करें और अपना दस्तावेज़ लोड करें
import com.groupdocs.annotation.Annotator;
// Load the document you want to annotate
Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/input.pdf");
प्रो टिप: विकास के दौरान एब्सोल्यूट पाथ का उपयोग करें ताकि “फ़ाइल नहीं मिली” त्रुटियों से बचा जा सके। प्रोडक्शन में क्लासपाथ या क्लाउड स्टोरेज बकेट से रिसोर्स लोड करने पर विचार करें।
चरण 2: टिप्पणी और रिप्लाई बनाना (सहयोगी भाग)
import com.groupdocs.annotation.models.Reply;
import java.util.Calendar;
import java.util.ArrayList;
import java.util.List;
Reply reply1 = new Reply();
reply1.setComment("First comment");
reply1.setRepliedOn(Calendar.getInstance().getTime());
Reply reply2 = new Reply();
reply2.setComment("Second comment");
reply2.setRepliedOn(Calendar.getInstance().getTime());
List<Reply> replies = new ArrayList<>();
replies.add(reply1);
replies.add(reply2);
वास्तविक उपयोग: समीक्षक एक विशिष्ट क्लॉज़ पर थ्रेडेड रिप्लाई जोड़ सकते हैं, जिससे बातचीत सीधे उस एनोटेशन से जुड़ी रहती है।
चरण 3: एनोटेशन कोऑर्डिनेट्स परिभाषित करना (पोज़िशन सही करना)
import com.groupdocs.annotation.models.Point;
Point point1 = new Point(80, 730);
Point point2 = new Point(240, 730);
Point point3 = new Point(80, 650);
Point point4 = new Point(240, 650);
List<Point> points = new ArrayList<>();
points.add(point1);
points.add(point2);
points.add(point3);
points.add(point4);
कोऑर्डिनेट सिस्टम:
- पॉइंट 1 और 2 अंडरलाइन के टॉप एज को परिभाषित करते हैं।
- पॉइंट 3 और 4 बॉटम एज को परिभाषित करते हैं।
- Y‑डिफरेंस (730 vs 650) थिकनेस को नियंत्रित करता है।
चरण 4: अंडरलाइन एनोटेशन बनाना और कॉन्फ़िगर करना
import com.groupdocs.annotation.models.annotationmodels.UnderlineAnnotation;
UnderlineAnnotation underline = new UnderlineAnnotation();
underline.setCreatedOn(Calendar.getInstance().getTime());
underline.setFontColor(65535); // Yellow in ARGB format
underline.setMessage("This is an underline annotation");
underline.setOpacity(0.7f);
underline.setPageNumber(0);
underline.setPoints(points);
underline.setReplies(replies);
annotator.add(underline);
रंग और अपारदर्शिता टिप्स:
FontColorARGB उपयोग करता है;65535(0x00FFFF) चमकीला पीला देता है।- लाल के लिए
16711680(0xFF0000); नीले के लिए255(0x0000FF) उपयोग करें। - अपारदर्शिता मान 0.5 से 0.8 के बीच पढ़ने में आसान बनाते हैं और टेक्स्ट को नहीं छिपाते।
चरण 5: अपने एनोटेटेड दस्तावेज़ को सहेजना
String outputPath = "YOUR_OUTPUT_DIRECTORY/output.pdf";
annotator.save(outputPath);
annotator.dispose();
मेमोरी मैनेजमेंट: dispose() कॉल नेटिव रिसोर्स रिलीज़ करता है और मेमोरी लीक्स को रोकता है—बड़ी बैच प्रोसेसिंग में यह अत्यंत महत्वपूर्ण है।
एनोटेशन हटाना: साफ़ दस्तावेज़ संस्करण बनाना
कभी‑कभी आपको PDF का वह संस्करण चाहिए जिसमें कोई भी एनोटेशन न हो—जैसे अंतिम स्वीकृत कॉन्ट्रैक्ट डिलीवर करते समय। GroupDocs इसे आसान बनाता है।
एनोटेशन हटाने के विकल्प समझना
आप कर सकते हैं:
- सभी एनोटेशन हटाएँ (सबसे आम)
- विशिष्ट प्रकार हटाएँ (जैसे केवल हाइलाइट)
- लेखक या पेज के आधार पर एनोटेशन हटाएँ
चरण‑बद्ध एनोटेशन हटाना
चरण 1: पहले एनोटेटेड दस्तावेज़ लोड करें
Annotator annotator = new Annotator(outputPath);
चरण 2: साफ़ आउटपुट के लिए Save Options कॉन्फ़िगर करें
import com.groupdocs.annotation.options.export.AnnotationType;
import com.groupdocs.annotation.options.export.SaveOptions;
SaveOptions saveOptions = new SaveOptions();
saveOptions.setAnnotationTypes(AnnotationType.NONE);
चरण 3: साफ़ संस्करण सहेजें
String noneAnnotationPath = Paths.get(outputPath).resolveSibling("none-annotation.pdf").toString();
annotator.save(noneAnnotationPath, saveOptions);
annotator.dispose();
यह साफ PDF Java फ़ाइल बनाता है जिसमें कोई एनोटेशन ऑब्जेक्ट नहीं होता, अंतिम वितरण के लिए एकदम उपयुक्त।
सामान्य समस्याएँ और समाधान
समस्या 1: “Document not found” त्रुटि
File inputFile = new File("path/to/your/document.pdf");
if (!inputFile.exists()) {
throw new IllegalArgumentException("Document not found: " + inputFile.getAbsolutePath());
}
if (!inputFile.canRead()) {
throw new IllegalArgumentException("Cannot read document: " + inputFile.getAbsolutePath());
}
Annotator annotator = new Annotator(inputFile.getAbsolutePath());
समस्या 2: एनोटेशन गलत स्थान पर दिखना
// Test with a simple rectangle in the top‑left corner
Point point1 = new Point(10, 10); // Top‑left
Point point2 = new Point(100, 10); // Top‑right
Point point3 = new Point(10, 30); // Bottom‑left
Point point4 = new Point(100, 30); // Bottom‑right
समस्या 3: बड़े दस्तावेज़ों में मेमोरी समस्या
// Increase JVM heap size when launching the app, e.g., -Xmx2g
try (Annotator annotator = new Annotator("document.pdf")) {
// Annotation logic here
annotator.save("output.pdf");
}
समस्या 4: प्रोडक्शन में लाइसेंसिंग समस्या
try {
License license = new License();
license.setLicense("path/to/your/license.lic");
System.out.println("License loaded successfully");
} catch (Exception e) {
System.err.println("License loading failed: " + e.getMessage());
// Handle the error appropriately
}
प्रोडक्शन एप्लिकेशन के लिए प्रदर्शन सर्वोत्तम प्रथाएँ
मेमोरी मैनेजमेंट रणनीतियाँ
try (Annotator annotator = new Annotator("input.pdf")) {
// Your annotation logic
annotator.save("output.pdf");
} // Annotator is automatically disposed here
List<String> documentPaths = Arrays.asList("doc1.pdf", "doc2.pdf", "doc3.pdf");
for (String docPath : documentPaths) {
try (Annotator annotator = new Annotator(docPath)) {
// Process one document at a time
annotator.add(createAnnotation());
annotator.save(getOutputPath(docPath));
}
// Memory is freed after each iteration
}
थ्रेडिंग विचार
GroupDocs.Annotation डिफ़ॉल्ट रूप से थ्रेड‑सेफ़ नहीं है। यदि आपका एप्लिकेशन एक साथ कई दस्तावेज़ प्रोसेस करता है:
- कभी भी
Annotatorइंस्टेंस को थ्रेड्स के बीच शेयर न करें। - फ़ाइल एक्सेस को सिंक्रोनाइज़ करें या लॉक मैकेनिज़्म उपयोग करें।
- यदि हाई थ्रूपुट चाहिए तो Annotator ऑब्जेक्ट्स का पूल बनाएं।
कैशिंग रणनीतियाँ
- अक्सर उपयोग किए जाने वाले एनोटेशन टेम्पलेट्स को कैश करें।
- सामान्य कोऑर्डिनेट सेट के लिए
Pointकलेक्शन को पुनः उपयोग करें। - यदि आप एक ही बेस डॉक्यूमेंट पर बार‑बार एनोटेट करते हैं तो टेम्पलेट PDF को मेमोरी में रखें।
Java PDF मेमोरी मैनेजमेंट टिप्स
बड़ी PDF या बैच प्रोसेसिंग में मेमोरी का कुशल उपयोग आवश्यक है। यहाँ कुछ व्यावहारिक सिफ़ारिशें हैं:
- प्रत्येक
Annotatorके लिए try‑with‑resources का उपयोग करें ताकि डिस्पोज़ सुनिश्चित हो। - JVM हीप (
-Xmx) को केवल आवश्यकतानुसार बढ़ाएँ; प्रोफ़ाइलिंग टूल से उपयोग मॉनिटर करें। - संभव हो तो दस्तावेज़ों को क्रमिक रूप से प्रोसेस करें, प्रत्येक फ़ाइल के बाद मेमोरी मुक्त करें।
- एक ही PDF को कई बार लोड करने से बचें; यदि पुनः पढ़ना आवश्यक हो तो वही स्ट्रीम पुनः उपयोग करें।
इन प्रथाओं को अपनाने से आपका एप्लिकेशन रिस्पॉन्सिव बना रहता है और भारी एनोटेशन वर्कलोड में आउट‑ऑफ़‑मेमोरी क्रैश से बचता है।
वास्तविक‑जीवन अनुप्रयोग और उपयोग‑केस
दस्तावेज़ समीक्षा प्रणाली
- क़ानूनी समीक्षा: अनुबंध के क्लॉज़ को अंडरलाइन करें और जोखिम पर टिप्पणी जोड़ें।
- अनुपालन ऑडिट: वित्तीय स्टेटमेंट में समस्याग्रस्त भागों को हाइलाइट करें।
- शैक्षणिक पीयर रिव्यू: प्रोफेसर उन पैराग्राफ़ को अंडरलाइन करें जिन्हें स्पष्टता चाहिए।
शैक्षणिक प्लेटफ़ॉर्म
- छात्र एनोटेशन टूल: शिक्षार्थियों को ई‑बुक में मुख्य अवधारणाओं को अंडरलाइन करने दें।
- शिक्षक फीडबैक: असाइनमेंट पर सीधे इनलाइन टिप्पणी प्रदान करें।
क्वालिटी एश्योरेंस वर्कफ़्लो
- तकनीकी दस्तावेज़ समीक्षा: इंजीनियर उन सेक्शन को अंडरलाइन करें जिन्हें अपडेट की आवश्यकता है।
- स्टैंडर्ड ऑपरेटिंग प्रोसीज़र: सुरक्षा अधिकारी महत्वपूर्ण चरणों को हाइलाइट करें।
कंटेंट मैनेजमेंट सिस्टम
- संपादकीय वर्कफ़्लो: संपादक उन टेक्स्ट को अंडरलाइन करें जिन्हें फ़ैक्ट‑चेक की जरूरत है।
- वर्ज़न कंट्रोल: दस्तावेज़ संशोधनों में एनोटेशन इतिहास ट्रैक करें।
पेशेवर इम्प्लीमेंटेशन के लिए उन्नत टिप्स
कस्टम एनोटेशन स्टाइल
UnderlineAnnotation underline = new UnderlineAnnotation();
underline.setFontColor(16711680); // Red for urgent items
underline.setOpacity(0.5f); // Subtle highlighting
underline.setFontSize(12); // Consistent sizing
underline.setMessage("URGENT REVIEW REQUIRED");
ट्रैकिंग के लिए एनोटेशन मेटाडेटा
underline.setCreatedBy("john.doe@company.com");
underline.setCreatedOn(Calendar.getInstance().getTime());
underline.setMessage("Legal review required - Contract clause 4.2");
यूज़र मैनेजमेंट सिस्टम के साथ इंटीग्रेशन
// Assume you have a method that returns the current authenticated user
String currentUser = getCurrentUser();
String userRole = getUserRole(currentUser);
// Apply role‑based styling
UnderlineAnnotation underline = new UnderlineAnnotation();
underline.setCreatedBy(currentUser);
underline.setFontColor(getRoleColor(userRole));
underline.setMessage(String.format("[%s] %s", userRole.toUpperCase(), commentText));
प्रोडक्शन मुद्दों का ट्रबलशूटिंग
प्रदर्शन मॉनिटरिंग
प्रोडक्शन में इन मेट्रिक्स पर नज़र रखें:
- हीप उपयोग – सुनिश्चित करें कि
dispose()कॉल किया गया है। - प्रति दस्तावेज़ प्रोसेसिंग समय –
annotator.save()से पहले/बाद टाइमस्टैम्प लॉग करें। - एरर रेट – एक्सेप्शन कैप्चर करें और वर्गीकृत करें।
सामान्य प्रोडक्शन गड़बड़ियाँ
- फ़ाइल लॉकिंग – एनोटेशन से पहले अपलोड की गई फ़ाइल बंद होनी चाहिए।
- समकालिक संपादन – ऑप्टिमिस्टिक लॉक या वर्ज़न चेक लागू करें।
- बड़ी फ़ाइलें (> 50 MB) – JVM टाइमआउट बढ़ाएँ और स्ट्रीमिंग API पर विचार करें।
एरर हैंडलिंग सर्वोत्तम प्रथाएँ
try (Annotator annotator = new Annotator(documentPath)) {
UnderlineAnnotation annotation = createAnnotation();
annotator.add(annotation);
annotator.save(outputPath);
} catch (Exception e) {
logger.error("Annotation failed for document: " + documentPath, e);
// Implement appropriate error recovery
throw new DocumentProcessingException("Failed to annotate document", e);
}
निष्कर्ष
अब आपके पास साफ PDF Java फ़ाइलें बनाने और GroupDocs.Annotation का उपयोग करके Java में PDF को अंडरलाइन एनोटेशन के साथ एनोटेट करने के लिए सभी आवश्यक चीज़ें हैं। याद रखें:
- रिसोर्स को try‑with‑resources या स्पष्ट
dispose()के साथ मैनेज करें। - गलत पोज़िशन से बचने के लिए कोऑर्डिनेट्स को पहले वैलिडेट करें।
- प्रोडक्शन स्थिरता के लिए मजबूत एरर हैंडलिंग लागू करें।
- अपने वर्कफ़्लो के अनुसार रोल‑बेस्ड स्टाइलिंग और मेटाडेटा का उपयोग करें।
अगला कदम? अन्य एनोटेशन प्रकार—हाइलाइट, स्टैम्प, या टेक्स्ट रिप्लेसमेंट—जोड़ें और एक पूर्ण‑फ़ीचर दस्तावेज़ समीक्षा समाधान बनाएं।
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: एक ही ऑपरेशन में कई टेक्स्ट क्षेत्रों को कैसे एनोटेट करें?
उत्तर: विभिन्न कोऑर्डिनेट्स के साथ कई UnderlineAnnotation ऑब्जेक्ट बनाएं और उन्हें क्रमशः annotator.add() से जोड़ें।
प्रश्न: क्या मैं PDF दस्तावेज़ में इमेज़ को भी एनोटेट कर सकता हूँ?
उत्तर: हाँ। वही कोऑर्डिनेट सिस्टम उपयोग करें, सुनिश्चित करें कि पॉइंट्स इमेज़ की सीमा के भीतर हों।
प्रश्न: PDF के अलावा GroupDocs.Annotation कौन‑से फ़ाइल फ़ॉर्मेट सपोर्ट करता है?
उत्तर: Word (DOC/DOCX), Excel (XLS/XLSX), PowerPoint (PPT/PPTX), और JPEG, PNG, TIFF जैसे इमेज फ़ॉर्मेट।
प्रश्न: बहुत बड़े दस्तावेज़ों को मेमोरी खत्म हुए बिना कैसे हैंडल करें?
उत्तर: दस्तावेज़ एक‑एक करके प्रोसेस करें, JVM हीप (-Xmx) बढ़ाएँ, और Annotator इंस्टेंस को तुरंत डिस्पोज़ करें।
प्रश्न: क्या मौजूदा एनोटेशन को दस्तावेज़ से निकाल सकते हैं?
उत्तर: हाँ। annotator.get() का उपयोग करके सभी एनोटेशन प्राप्त करें, फिर टाइप, ऑथर या पेज के आधार पर फ़िल्टर करें।
अंतिम अपडेट: 2026-03-24
टेस्टेड वर्ज़न: GroupDocs.Annotation 25.2
लेखक: GroupDocs