जावा PDF एनोटेशन – ग्रुपडॉक्स के साथ एनोटेटेड PDF पेज निर्यात
परिचय
क्या आप कभी PDF दस्तावेज़ों पर अपनी टीम से सार्थक फीडबैक प्राप्त करने में संघर्ष करते हैं? आप अकेले नहीं हैं। पारंपरिक दस्तावेज़ समीक्षा प्रक्रियाएँ अत्यंत धीमी होती हैं—अनंत ईमेल श्रृंखलाएँ, विभिन्न स्वरूपों में बिखरे कमेंट, और अनिवार्य “क्या आप उस सेक्शन को हाइलाइट कर सकते हैं जिसके बारे में आप बात कर रहे हैं?”
इस गाइड में आप सीखेंगे कि एनोटेटेड PDF पेज निर्यात को GroupDocs.Annotation for Java का उपयोग करके कैसे करें, जिससे स्थिर PDFs को सहयोगी कार्यस्थलों में बदल दिया जाता है जहाँ टीम सदस्य रीयल‑टाइम में हाइलाइट, कमेंट और मार्कअप कर सकते हैं।
अंत तक आप क्या सीखेंगे:
- अपने Maven प्रोजेक्ट में GroupDocs.Annotation को सही तरीके से सेट अप करना
- पिक्सेल‑परफेक्ट सटीकता के साथ एरिया और एलिप्स एनोटेशन जोड़ना
- संक्षिप्त PDFs के लिए एनोटेटेड PDF पेज निर्यात विकल्पों को कॉन्फ़िगर करना
- डेवलपर्स द्वारा सामना किए जाने वाले सबसे आम मुद्दों का ट्रबलशूटिंग
- प्रोडक्शन वातावरण के लिए प्रदर्शन अनुकूलन
त्वरित उत्तर
- एनोटेटेड पेज निर्यात करने का मुख्य लाभ क्या है? यह केवल प्रासंगिक फीडबैक वाले हल्के PDF बनाता है, जो समीक्षाओं और सारांशों के लिए आदर्श है।
- कौन सा Maven संस्करण आवश्यक है? Maven 3.6+ की सिफारिश की जाती है।
- क्या GroupDocs.Annotation के लिए लाइसेंस चाहिए? हाँ, प्रोडक्शन उपयोग के लिए ट्रायल या कमर्शियल लाइसेंस आवश्यक है।
- क्या मैं PDF के अलावा अन्य फ़ॉर्मेट को एनोटेट कर सकता हूँ? बिल्कुल—GroupDocs 50 से अधिक दस्तावेज़ प्रकारों को सपोर्ट करता है।
- बड़े PDFs के साथ मेमोरी समस्याओं से कैसे बचें? पेजों को बैच में प्रोसेस करें, JVM हीप बढ़ाएँ, और हमेशा
Annotatorको try‑with‑resources के साथ बंद करें।
“एनोटेटेड PDF पेज निर्यात” क्या है?
एनोटेटेड PDF पेज निर्यात का मतलब है एक नया PDF बनाना जिसमें केवल वे पेज शामिल हों जहाँ एनोटेशन मौजूद हैं। इससे फ़ाइल आकार कम होता है, समीक्षकों को प्रासंगिक सामग्री पर ध्यान केंद्रित करने में मदद मिलती है, और संस्करण नियंत्रण सरल हो जाता है।
एनोटेटेड PDF पेज निर्यात क्यों करें?
- केन्द्रित समीक्षा चक्र – समीक्षक केवल उन पेजों को देखते हैं जिन्हें ध्यान चाहिए।
- छोटी फ़ाइलें – ईमेल वितरण या वेब अपलोड के लिए आदर्श।
- ऑडिट ट्रेल – आप सभी फीडबैक का साफ़ रिकॉर्ड रख सकते हैं बिना अनटच्ड पेजों के अव्यवस्था के।
पूर्वापेक्षाएँ: अपना वातावरण तैयार करें
कोडिंग शुरू करने से पहले, सुनिश्चित करें कि सब कुछ सही ढंग से सेट है। भरोसा करें, यहाँ 5 मिनट लगाना बाद में घंटों की डिबगिंग बचा सकता है।
आवश्यक लाइब्रेरी और डिपेंडेंसीज़
आपको अपने प्रोजेक्ट में GroupDocs.Annotation for Java चाहिए। यहाँ वह Maven कॉन्फ़िगरेशन है जो वास्तव में काम करता है (मैंने बहुत सारे ट्यूटोरियल देखे हैं जिनमें पुरानी रिपॉज़िटरी URLs थीं):
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>
सिस्टम आवश्यकताएँ
- जावा डेवलपमेंट किट (JDK): संस्करण 8 या उससे ऊपर (बेहतर प्रदर्शन के लिए JDK 11+ की सिफारिश)
- Maven: डिपेंडेंसी प्रबंधन के लिए संस्करण 3.6+
- मेमोरी: आपके एप्लिकेशन के लिए कम से कम 2 GB RAM उपलब्ध हो (बड़े PDFs के लिए अधिक)
ज्ञान पूर्वापेक्षाएँ
आपको निम्नलिखित में सहज होना चाहिए:
- बेसिक जावा प्रोग्रामिंग कॉन्सेप्ट्स
- Maven डिपेंडेंसी मैनेजमेंट
- फ़ाइल I/O ऑपरेशन्स
यदि आप विशेषज्ञ नहीं हैं तो चिंता न करें—मैं सब कुछ क्रमशः समझाऊँगा।
GroupDocs.Annotation for Java सेट अप करना
अब चलिए GroupDocs.Annotation को आपके प्रोजेक्ट में सही ढंग से कॉन्फ़िगर करते हैं। कई डेवलपर्स यहाँ पहली बाधा का सामना करते हैं, इसलिए इन विवरणों पर ध्यान दें।
चरण 1: डिपेंडेंसी जोड़ें
ऊपर दिखाए गए Maven कॉन्फ़िगरेशन का उपयोग करके GroupDocs.Annotation को अपने प्रोजेक्ट में शामिल करें। pom.xml में जोड़ने के बाद चलाएँ:
mvn clean install
यदि कोई डाउनलोड त्रुटि आती है, तो सुनिश्चित करें कि आपका रिपॉज़िटरी URL बिल्कुल ऊपर दिखाए अनुसार है।
चरण 2: लाइसेंसिंग संभालें (महत्वपूर्ण!)
बहुत से ट्यूटोरियल इस बात को छोड़ देते हैं: GroupDocs.Annotation व्यावसायिक उपयोग के लिए मुफ्त नहीं है। आपके पास कुछ विकल्प हैं:
- फ्री ट्रायल: विकास और परीक्षण के लिए उपयुक्त
- टेम्पररी लाइसेंस: विस्तारित मूल्यांकन अवधि के लिए परफेक्ट
- फुल लाइसेंस: प्रोडक्शन डिप्लॉयमेंट के लिए आवश्यक
मूल्यांकन शुरू करने के लिए, लाइसेंस विकल्पों के लिए GroupDocs खरीद देखें।
चरण 3: बेसिक इनिशियलाइज़ेशन
यहाँ Annotator क्लास को इनिशियलाइज़ करने का तरीका है (यह आपका मुख्य एंट्री पॉइंट है):
import com.groupdocs.annotation.Annotator;
try (final Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/document.pdf")) {
// Your annotation code goes here
System.out.println("Annotator initialized successfully!");
}
प्रो टिप: हमेशा try‑with‑resources का उपयोग करें (जैसा ऊपर दिखाया गया है) ताकि फ़ाइल हैंडल्स का सही क्लीन‑अप हो सके। कई डेवलपर्स इस स्टेप को भूल जाने से मेमोरी लीक होते देखे हैं।
इम्प्लीमेंटेशन गाइड: चरण‑दर‑चरण एनोटेशन जोड़ना
अब मज़े का हिस्सा—आइए आपके PDFs में वास्तविक एनोटेशन जोड़ना शुरू करें। हम दो लोकप्रिय एनोटेशन प्रकारों पर फोकस करेंगे जो अधिकांश उपयोग मामलों को कवर करते हैं।
एरिया एनोटेशन जोड़ना (सेक्शन हाइलाइट करने के लिए परफेक्ट)
एरिया एनोटेशन तब शानदार होते हैं जब आपको पूरे पैराग्राफ, सेक्शन या PDF में किसी भी आयताकार क्षेत्र को हाइलाइट करना हो। इन्हें डिजिटल हाईलाइटर मार्कर समझें।
चरण 1: एरिया एनोटेशन बनाएं
import com.groupdocs.annotation.models.Rectangle;
import com.groupdocs.annotation.models.annotationmodels.AreaAnnotation;
// Create area annotation
AreaAnnotation area = new AreaAnnotation();
area.setBox(new Rectangle(100, 100, 100, 100)); // x, y, width, height in pixels
area.setBackgroundColor(65535); // Yellow highlight color (ARGB format)
area.setPageNumber(1); // First page (1-indexed)
पैरामीटर समझना:
Rectangle(100, 100, 100, 100): बाएँ से 100 px, ऊपर से 100 px की स्थिति, 100 px चौड़ाई और ऊँचाई65535: यह ARGB फ़ॉर्मेट में पीला है। सामान्य रंग: रेड = 16711680, ब्लू = 255, ग्रीन = 65280setPageNumber(1): PDF पेज 1‑इंडेक्स्ड होते हैं, 0‑इंडेक्स्ड नहीं (आम गलती!)
एरिया एनोटेशन कब उपयोग करें
- कानूनी दस्तावेज़ों में महत्वपूर्ण पैराग्राफ हाइलाइट करना
- प्रोजेक्ट स्पेसिफिकेशन में समीक्षा आवश्यक सेक्शन को मार्क करना
- रिपोर्ट में विशिष्ट डेटा रेंज पर ध्यान आकर्षित करना
- कंटेंट ब्लॉक्स के चारों ओर विज़ुअल बाउंड्री बनाना
एलिप्स एनोटेशन जोड़ना (कॉलआउट के लिए शानदार)
एलिप्स एनोटेशन तब परफेक्ट होते हैं जब आप बिना आयत के कठोर किनारों के विशिष्ट तत्वों पर ध्यान आकर्षित करना चाहते हैं। ये विशेष रूप से सर्कुलर चार्ट, लोगो या सॉफ्ट‑फ़ोकस एरिया को हाइलाइट करने में उपयोगी होते हैं।
चरण 2: एलिप्स एनोटेशन बनाएं
import com.groupdocs.annotation.models.annotationmodels.EllipseAnnotation;
// Create ellipse annotation
EllipseAnnotation ellipse = new EllipseAnnotation();
ellipse.setBox(new Rectangle(200, 200, 150, 100)); // Ellipse bounds
ellipse.setBackgroundColor(123456); // Custom color
ellipse.setPageNumber(1); // Same page as area annotation
आयत की बजाय एलिप्स क्यों?
- सर्कुलर एलिमेंट्स को हाइलाइट करने में अधिक आकर्षक
- “स्पॉटलाइट” इफ़ेक्ट देता है जो कम इन्ट्रूज़िव लगता है
- सामग्री को पूरी तरह से छुपाए बिना ध्यान आकर्षित करता है
- ऑर्गेनिक, हैंड‑ड्रॉन लुक बनाने में मददगार
चरण 3: अपने दस्तावेज़ में एनोटेशन जोड़ें
अब दोनों एनोटेशन को मिलाकर अपने PDF में जोड़ते हैं:
import java.util.ArrayList;
import java.util.List;
// Create a list to hold all annotations
List<com.groupdocs.annotation.models.AnnotationBase> annotations = new ArrayList<>();
annotations.add(area);
annotations.add(ellipse);
// Add all annotations at once (more efficient than adding individually)
annotator.add(annotations);
System.out.println("Added " + annotations.size() + " annotations successfully!");
परफॉर्मेंस टिप: जैसा ऊपर दिखाया गया है, बैच में एनोटेशन जोड़ना annotator.add() को कई बार कॉल करने की तुलना में काफी तेज़ है, विशेषकर बड़े दस्तावेज़ों में।
GroupDocs के साथ एनोटेटेड PDF पेज निर्यात कैसे करें
यह एक शक्तिशाली फीचर है जिसे कई डेवलपर्स नजरअंदाज़ कर देते हैं: आप GroupDocs को केवल उन पेजों को निर्यात करने के लिए कॉन्फ़िगर कर सकते हैं जिनमें एनोटेशन हैं। यह सारांश दस्तावेज़ बनाने या फ़ाइल आकार घटाने के लिए अत्यंत उपयोगी है।
चयनात्मक पेज निर्यात सेट अप करना
import com.groupdocs.annotation.options.export.SaveOptions;
// Configure save options for annotated pages only
SaveOptions saveOptions = new SaveOptions();
saveOptions.setOnlyAnnotatedPages(true); // This is the magic setting
// Save the document with your custom options
annotator.save("YOUR_OUTPUT_DIRECTORY/annotated_summary.pdf", saveOptions);
वास्तविक उपयोग के मामले:
- कानूनी समीक्षा: केवल वकील कमेंट वाले पेज निर्यात करें
- शैक्षणिक ग्रेडिंग: केवल मार्क किए गए सेक्शन वाले सारांश शीट बनाएं
- प्रोजेक्ट मैनेजमेंट: केवल अपडेटेड सेक्शन दिखाने वाली स्टेटस रिपोर्ट जनरेट करें
- क्वालिटी एश्योरेंस: पहचाने गए मुद्दों वाले पेज निकालें
सामान्य समस्याएँ और समाधान
आइए उन समस्याओं को देखें जो आप सबसे अधिक सामना कर सकते हैं (और डिबगिंग समय बचाएँ)।
समस्या 1: “फ़ाइल किसी अन्य प्रक्रिया द्वारा उपयोग में है”
लक्षण: एनोटेटेड दस्तावेज़ सहेजते समय IOException
कारण: Annotator इंस्टेंस को ठीक से बंद नहीं किया गया
समाधान: हमेशा try‑with‑resources का उपयोग करें:
// Wrong way - can cause file locks
Annotator annotator = new Annotator("document.pdf");
// ... your code ...
// Forgot to close!
// Right way - automatic cleanup
try (Annotator annotator = new Annotator("document.pdf")) {
// ... your code ...
} // Automatically closed here
समस्या 2: एनोटेशन गलत स्थान पर दिख रहे हैं
लक्षण: आपके एनोटेशन अप्रत्याशित स्थानों पर दिखाई देते हैं
कारण: कॉर्डिनेट सिस्टम की समझ में गड़बड़ी या DPI स्केलिंग समस्या
समाधान:
- PDF कॉर्डिनेट बॉटम‑लेफ़्ट से शुरू होते हैं (ज्यादातर UI फ्रेमवर्क के टॉप‑लेफ़्ट से अलग)
- पहले ज्ञात कॉर्डिनेट वैल्यूज़ के साथ टेस्ट करें
- पोजीशन कैलकुलेट करते समय PDF पेज डाइमेंशन को ध्यान में रखें
समस्या 3: बड़े PDFs के साथ OutOfMemoryError
लक्षण: बड़े दस्तावेज़ प्रोसेस करते समय एप्लिकेशन क्रैश हो जाता है
कारण: पूरी PDF को मेमोरी में लोड करना
समाधान:
// Increase JVM heap size
// -Xmx2g for 2GB max heap
// Or process pages individually
for (int page = 1; page <= totalPages; page++) {
// Process one page at a time
}
समस्या 4: रंग सही नहीं दिख रहे हैं
लक्षण: एनोटेशन के रंग अपेक्षित से अलग दिखते हैं
कारण: रंग फ़ॉर्मेट (RGB बनाम ARGB) में भ्रम
समाधान: लगातार ARGB फ़ॉर्मेट उपयोग करें:
- रेड:
0xFFFF0000या16711680 - ग्रीन:
0xFF00FF00या65280 - ब्लू:
0xFF0000FFया255 - अर्ध‑पारदर्शी रेड:
0x80FF0000
प्रोडक्शन उपयोग के लिए सर्वश्रेष्ठ प्रैक्टिसेज
अपनी एनोटेशन फीचर को डिप्लॉय करने के लिए तैयार हैं? यहाँ वे प्रैक्टिसेज़ हैं जो शौकिया इम्प्लीमेंटेशन को प्रो‑ग्रेड सॉल्यूशन से अलग करती हैं।
मेमोरी मैनेजमेंट
// Configure JVM for optimal performance
// -XX:+UseG1GC -Xmx4g -XX:MaxGCPauseMillis=200
// In your code, process large documents in chunks
private void processLargeDocument(String filePath) {
try (Annotator annotator = new Annotator(filePath)) {
// Process annotations in batches of 10‑20
List<AnnotationBase> batch = new ArrayList<>();
for (AnnotationBase annotation : allAnnotations) {
batch.add(annotation);
if (batch.size() >= 20) {
annotator.add(batch);
batch.clear(); // Free memory
}
}
// Handle remaining annotations
if (!batch.isEmpty()) {
annotator.add(batch);
}
}
}
एरर हैंडलिंग स्ट्रैटेजी
public boolean addAnnotationSafely(String inputPath, String outputPath) {
try (Annotator annotator = new Annotator(inputPath)) {
// Your annotation logic here
annotator.save(outputPath);
return true;
} catch (Exception e) {
// Log the error with context
logger.error("Failed to annotate document: " + inputPath, e);
// Clean up partial files
try {
Files.deleteIfExists(Paths.get(outputPath));
} catch (IOException cleanupError) {
logger.warn("Could not clean up partial file", cleanupError);
}
return false;
}
}
परफॉर्मेंस ऑप्टिमाइज़ेशन टिप्स
- बैच ऑपरेशन्स – हमेशा एक साथ कई एनोटेशन जोड़ें
- लेज़ी लोडिंग – केवल उन पेजों को लोड करें जिनमें आप एनोटेट कर रहे हैं
- कनेक्शन पूलिंग – संभव हो तो
Annotatorइंस्टेंस को पुनः उपयोग करें (सावधानी के साथ) - फ़ाइल स्ट्रीमिंग – बहुत बड़े दस्तावेज़ों के लिए स्ट्रीमिंग का उपयोग करें
कब GroupDocs को अन्य विकल्पों के बजाय चुनें
GroupDocs.Annotation अकेला नहीं है। यहाँ वह समय है जब यह समझदारी है:
GroupDocs चुनें जब:
- आपको विस्तृत एनोटेशन प्रकारों की आवश्यकता हो (20+ सपोर्टेड फ़ॉर्मेट)
- PDF के अलावा कई दस्तावेज़ फ़ॉर्मेट के साथ काम करना हो
- एंटरप्राइज़‑लेवल सपोर्ट और डॉक्यूमेंटेशन चाहिए
- व्यावसायिक एप्लिकेशन बना रहे हों (लाइसेंसिंग सरल)
विकल्पों पर विचार करें जब:
- आपको केवल बेसिक PDF एनोटेशन चाहिए (Apache PDFBox पर्याप्त हो सकता है)
- बजट सीमित है (ओपन‑सोर्स समाधान उपलब्ध)
- उपयोग केस सरल है (बेसिक हाइलाइटिंग के लिए ओवरकिल)
वास्तविक दुनिया में व्यावहारिक अनुप्रयोग
यहाँ बताया गया है कि टीमें प्रोडक्शन में जावा PDF एनोटेशन का कैसे उपयोग कर रही हैं:
कानूनी दस्तावेज़ समीक्षा
कानूनी फर्म एरिया एनोटेशन का उपयोग करके अनुबंध क्लॉज़ को हाइलाइट करती हैं और एलिप्स एनोटेशन से विवादित सेक्शन मार्क करती हैं। चयनात्मक निर्यात फीचर क्लाइंट रिव्यू के लिए साफ़ सारांश दस्तावेज़ बनाता है।
शैक्षणिक पेपर फीडबैक
विश्वविद्यालय प्रोफेसर छात्र सबमिशन पर विभिन्न रंगों के एनोटेशन लगाते हैं: व्याकरण (लाल), सामग्री (नीला), संरचना (हरा)।
सॉफ्टवेयर डॉक्यूमेंटेशन रिव्यू
डेवलपमेंट टीम API डॉक्यूमेंटेशन को रिव्यू चक्र के दौरान एनोटेट करती है, उन सेक्शन को मार्क करती है जिन्हें अपडेट या स्पष्ट करने की जरूरत है।
क्वालिटी एश्योरेंस प्रोसेस
मैन्युफैक्चरिंग कंपनियाँ निरीक्षण रिपोर्ट को एनोटेट करती हैं, अनुपालन मुद्दों को हाइलाइट करती हैं और विभिन्न एनोटेशन प्रकारों से सुधारात्मक कार्रवाई को मार्क करती हैं।
बड़े‑स्तर पर डिप्लॉयमेंट के लिए प्रदर्शन विचार
गंभीर वर्कलोड संभालने के लिए, इन पहलुओं को ध्यान में रखें:
मेमोरी उपयोग अनुकूलन
- दस्तावेज़ आकार: 10 MB PDF ≈ प्रोसेसिंग के दौरान 50 MB मेमोरी
- एनोटेशन काउंट: प्रत्येक एनोटेशन लगभग 1‑2 KB मेमोरी ओवरहेड जोड़ता है
- समकालिक उपयोगकर्ता: प्रति समानांतर एनोटेशन सत्र के लिए 100 MB+ प्लान करें
प्रोसेसिंग स्पीड बेंचमार्क
वास्तविक‑दुनिया परीक्षण के आधार पर:
- छोटा PDF (1‑10 पेज): प्रति एनोटेशन ~100‑500 ms
- मध्यम PDF (10‑50 पेज): ~500 ms‑2 s प्रति एनोटेशन
- बड़ा PDF (100+ पेज): ~2‑10 s प्रति एनोटेशन
स्केलिंग स्ट्रैटेजी
// Use thread pools for concurrent processing
ExecutorService executor = Executors.newFixedThreadPool(4);
// Process multiple documents concurrently
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
processDocument(documentPath);
}, executor);
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: मैं अपने जावा प्रोजेक्ट में GroupDocs.Annotation कैसे इंस्टॉल करूँ?
उत्तर: प्री‑रिक्विज़िट सेक्शन में दिखाए गए Maven डिपेंडेंसी को अपने pom.xml में जोड़ें, फिर mvn clean install चलाएँ। सुनिश्चित करें कि रिपॉज़िटरी URL सही है।
प्रश्न: क्या मैं PDF के अलावा अन्य दस्तावेज़ फ़ॉर्मेट को एनोटेट कर सकता हूँ?
उत्तर: हाँ! GroupDocs.Annotation 50 से अधिक फ़ॉर्मेट सपोर्ट करता है, जिसमें Word, Excel, PowerPoint और इमेज फ़ाइलें शामिल हैं। API अधिकांश फ़ॉर्मेट में समान रहता है।
प्रश्न: एरिया और एलिप्स के अलावा कौन‑से एनोटेशन प्रकार उपलब्ध हैं?
उत्तर: GroupDocs 15+ प्रकार सपोर्ट करता है जैसे टेक्स्ट हाईलाइट, अंडरलाइन, स्ट्राइक‑आउट, एरो, वॉटरमार्क, टेक्स्ट रिप्लेसमेंट, और पॉइंट एनोटेशन। प्रत्येक प्रकार के पास विशिष्ट स्टाइलिंग विकल्प होते हैं।
प्रश्न: बड़े PDF फ़ाइलों को मेमोरी खत्म हुए बिना कैसे हैंडल करूँ?
उत्तर: दस्तावेज़ को चंक्स में प्रोसेस करें, JVM हीप बढ़ाएँ (-Xmx4g), जहाँ संभव हो स्ट्रीमिंग का उपयोग करें, और हमेशा Annotator इंस्टेंस बंद करें। 100 MB से बड़े फ़ाइलों के लिए पेज‑वाइज़ प्रोसेसिंग पर विचार करें।
प्रश्न: क्या मैं बेसिक रंगों से आगे एनोटेशन की उपस्थिति कस्टमाइज़ कर सकता हूँ?
उत्तर: बिल्कुल। आप अपारदर्शिता, बॉर्डर स्टाइल, टेक्स्ट प्रॉपर्टीज़, और कस्टम आइकन भी कस्टमाइज़ कर सकते हैं। प्रत्येक एनोटेशन प्रकार विस्तृत स्टाइलिंग सेटर्स प्रदान करता है।
संबंधित संसाधन: GroupDocs.Annotation डॉक्यूमेंटेशन | पूरा API रेफ़रेंस | GroupDocs कम्युनिटी फ़ोरम
अंतिम अपडेट: 2026-03-27
टेस्टेड विद: GroupDocs.Annotation 25.2
लेखक: GroupDocs