जावा गाइड: GroupDocs का उपयोग करके PDF एनोटेशन बनाएं

अपने जावा एप्लिकेशन में PDF एनोटेशन की आवश्यकता क्यों है

आइए ईमानदार रहें—सही टूल्स के बिना दस्तावेज़ समीक्षा और सहयोग का प्रबंधन एक दुःस्वप्न हो सकता है। चाहे आप एंटरप्राइज़ दस्तावेज़ प्रबंधन प्रणाली बना रहे हों या अपने जावा एप्लिकेशन में PDF में कुछ टिप्पणी जोड़नी हो, creating pdf annotations groupdocs एक गेम‑चेंजर है। यदि आप create pdf annotations groupdocs करना चाहते हैं, तो यह गाइड आपको न्यूनतम कठिनाई के साथ इसे कैसे करें, दिखाता है।

इस व्यापक ट्यूटोरियल में, आप GroupDocs.Annotation का उपयोग करके Java PDF annotation में निपुण हो जाएंगे—जो उपलब्ध सबसे मजबूत दस्तावेज़ एनोटेशन लाइब्रेरी में से एक है। अंत तक, आप स्ट्रीम से दस्तावेज़ लोड करने, विभिन्न प्रकार के एनोटेशन जोड़ने, और अधिकांश डेवलपर्स को फँसाने वाले सामान्य समस्याओं को संभालने के बारे में ठीक-ठीक जानेंगे।

What makes this tutorial different? हम वास्तविक‑दुनिया के परिदृश्यों पर ध्यान देंगे, न कि केवल बुनियादी उदाहरणों पर। आप गॉटचाज़, प्रदर्शन संबंधी विचार, और प्रोडक्शन‑रेडी तकनीकों को सीखेंगे जो वास्तव में महत्वपूर्ण हैं।

तैयार हैं? चलिए शुरू करते हैं।

त्वरित उत्तर

  • Java में प्रोग्रामेटिकली PDF एनोटेट करने वाली लाइब्रेरी कौन सी है? GroupDocs.Annotation.
  • क्या इसे आज़माने के लिए भुगतान लाइसेंस की आवश्यकता है? नहीं, एक मुफ्त ट्रायल विकास और परीक्षण के लिए काम करता है।
  • क्या मैं डेटाबेस या क्लाउड स्टोरेज से PDF लोड कर सकता हूँ? हाँ—स्ट्रीम‑आधारित लोडिंग का उपयोग करें।
  • कौन सा जावा संस्करण अनुशंसित है? सर्वोत्तम प्रदर्शन के लिए Java 11+।
  • मैं मेमोरी लीक से कैसे बचूँ? हमेशा Annotator को डिस्पोज़ करें या try‑with‑resources का उपयोग करें।

create pdf annotations groupdocs क्या है?

GroupDocs के साथ PDF एनोटेशन बनाना मतलब प्रोग्रामेटिकली टिप्पणी, हाइलाइट, शैप्स, या किसी भी दृश्य मार्कर को PDF फ़ाइल में जोड़ना। यह क्षमता सहयोगी समीक्षा टूल, कानूनी अनुबंध जांचकर्ता, या किसी भी सिस्टम के निर्माण के लिए आवश्यक है जहाँ उपयोगकर्ताओं को एप्लिकेशन छोड़े बिना दस्तावेज़ सामग्री पर चर्चा करनी होती है।

spring boot pdf annotation के लिए GroupDocs का उपयोग क्यों करें?

GroupDocs.Annotation Spring Boot के साथ सहजता से इंटीग्रेट होता है, जिससे आप एनोटेशन सेवाओं को REST एंडपॉइंट्स के रूप में एक्सपोज़ कर सकते हैं। इसका समृद्ध API, 50 से अधिक फ़ॉर्मैट्स का समर्थन, और आसान लाइसेंसिंग मॉडल इसे spring boot pdf annotation प्रोजेक्ट्स के लिए शीर्ष विकल्प बनाते हैं।

पूर्वापेक्षाएँ: अपना वातावरण तैयार करना

प्रोफेशनल की तरह PDF एनोटेट करना शुरू करने से पहले, सुनिश्चित करें कि आपने ये बुनियादी बातें पूरी कर ली हैं:

आवश्यक सेटअप आवश्यकताएँ

Java पर्यावरण:

  • JDK 8 या उससे ऊपर (बेहतर प्रदर्शन के लिए JDK 11+ अनुशंसित)
  • आपका पसंदीदा IDE (IntelliJ IDEA, Eclipse, या VS Code)

प्रोजेक्ट निर्भरताएँ:

  • निर्भरताओं के प्रबंधन के लिए Maven 3.6+
  • GroupDocs.Annotation लाइब्रेरी संस्करण 25.2 या बाद का

आवश्यक ज्ञान

चिंता न करें—आपको जावा विशेषज्ञ होने की जरूरत नहीं है। बुनियादी परिचय होना चाहिए:

  • जावा सिंटैक्स और ऑब्जेक्ट‑ओरिएंटेड कॉन्सेप्ट्स
  • Maven निर्भरताओं का प्रबंधन
  • फ़ाइल I/O ऑपरेशन्स

बस इतना ही! हम आगे चलकर बाकी सब समझाएंगे।

GroupDocs.Annotation सेटअप: सही तरीका

अधिकांश ट्यूटोरियल महत्वपूर्ण सेटअप विवरण को छोड़ देते हैं। यह नहीं है। चलिए GroupDocs.Annotation को आपके प्रोजेक्ट में सही ढंग से इंटीग्रेट करते हैं।

वास्तविक रूप से काम करने वाली Maven कॉन्फ़िगरेशन

pom.xml में यह जोड़ें (और हाँ, रिपॉज़िटरी कॉन्फ़िगरेशन महत्वपूर्ण है—कई डेवलपर्स इस कदम को छोड़ देते हैं):

<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>

Pro tip: हमेशा GroupDocs रिलीज़ पेज पर नवीनतम संस्करण की जाँच करें। संस्करण 25.2 में पहले के संस्करणों की तुलना में महत्वपूर्ण प्रदर्शन सुधार शामिल हैं।

लाइसेंसिंग: आपके विकल्प

आपके पास यहाँ तीन विकल्प हैं:

  1. Free Trial: परीक्षण और छोटे प्रोजेक्ट्स के लिए उपयुक्त
  2. Temporary License: विकास और प्रूफ़‑ऑफ़‑कॉन्सेप्ट के लिए शानदार
  3. Full License: प्रोडक्शन डिप्लॉयमेंट्स के लिए आवश्यक

इस ट्यूटोरियल के लिए, मुफ्त ट्रायल पूरी तरह काम करता है। बस याद रखें कि प्रोडक्शन ऐप्स को उचित लाइसेंस की आवश्यकता होगी।

त्वरित सेटअप सत्यापन

मज़ेदार भाग में जाने से पहले सुनिश्चित करें कि सब कुछ काम कर रहा है:

import com.groupdocs.annotation.Annotator;

public class AnnotationSetup {
    public static void main(String[] args) {
        System.out.println("GroupDocs.Annotation is ready to use!");
        // If this compiles and runs without errors, you're good to go
    }
}

स्ट्रीम से दस्तावेज़ लोड करना: आधार

यहाँ चीज़ें रोचक हो जाती हैं। अधिकांश डेवलपर्स फ़ाइल पाथ से दस्तावेज़ लोड करते हैं, लेकिन stream‑based loading आपको अद्भुत लचीलापन देता है। आप डेटाबेस, वेब अनुरोध, या किसी भी अन्य स्रोत से दस्तावेज़ लोड कर सकते हैं।

स्ट्रीम क्यों महत्वपूर्ण हैं

सोचिए: वास्तविक एप्लिकेशन में, आपके PDF इन स्रोतों से आ सकते हैं:

  • क्लाउड स्टोरेज (AWS S3, Google Cloud, Azure)
  • डेटाबेस BLOBs
  • HTTP अनुरोध
  • एन्क्रिप्टेड फ़ाइल सिस्टम

स्ट्रीम इन सभी परिदृश्यों को सहजता से संभालते हैं।

चरण 1: अपना इनपुट स्ट्रीम खोलें

import java.io.FileInputStream;
import java.io.InputStream;

public class LoadDocument {
    public static void main(String[] args) throws Exception {
        // Replace with your actual document path
        InputStream stream = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/input.pdf");
        // The stream is now ready for GroupDocs.Annotation
    }
}

Real‑world note: प्रोडक्शन में, आप आमतौर पर इसे उचित अपवाद हैंडलिंग और रिसोर्स मैनेजमेंट (try‑with‑resources आपका मित्र है) में रैप करेंगे।

चरण 2: Annotator को इनिशियलाइज़ करें

import com.groupdocs.annotation.Annotator;

public class LoadDocument {
    public static void main(String[] args) throws Exception {
        InputStream stream = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/input.pdf");
        final Annotator annotator = new Annotator(stream);
        
        // Now you're ready to start adding annotations
        // Don't forget to dispose() when you're done!
    }
}

Memory management tip: समाप्त होने पर हमेशा annotator.dispose() कॉल करें। यह मेमोरी लीक को रोकता है जो समय के साथ आपके एप्लिकेशन के प्रदर्शन को नुकसान पहुँचा सकता है।

अपनी पहली एनोटेशन जोड़ना: एरिया एनोटेशन

एरिया एनोटेशन दस्तावेज़ के विशिष्ट क्षेत्रों को हाइलाइट करने के लिए उत्तम हैं। इन्हें डिजिटल स्टिकी नोट्स की तरह समझें जिन्हें आप अपने PDF में कहीं भी रख सकते हैं।

एरिया एनोटेशन बनाना

import com.groupdocs.annotation.models.Rectangle;
import com.groupdocs.annotation.models.annotationmodels.AreaAnnotation;

public class LoadDocument {
    public static void main(String[] args) throws Exception {
        InputStream stream = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/input.pdf");
        final Annotator annotator = new Annotator(stream);

        // Create an area annotation
        AreaAnnotation area = new AreaAnnotation();
        area.setBox(new Rectangle(100, 100, 100, 100)); // x, y, width, height
        area.setBackgroundColor(65535); // ARGB color format (this is cyan)

        // Add the annotation to your document
        annotator.add(area);
        
        // Save the annotated document
        String outputPath = "YOUR_OUTPUT_DIRECTORY/LoadDocumentFromStream.pdf";
        annotator.save(outputPath);
        
        // Clean up resources
        annotator.dispose();
    }
}

Rectangle कॉर्डिनेट्स को समझना

Rectangle(100, 100, 100, 100) पैरामीटर इस प्रकार काम करते हैं:

  • पहला 100: X स्थिति (बाएँ किनारे से पिक्सेल में)**
  • दूसरा 100: Y स्थिति (ऊपर किनारे से पिक्सेल में)**
  • तीसरा 100: एनोटेशन की चौड़ाई**
  • चौथा 100: एनोटेशन की ऊँचाई**

Coordinate tip: PDF कॉर्डिनेट्स शीर्ष‑बाएँ कोने से शुरू होते हैं। यदि आप गणितीय कॉर्डिनेट्स (नीचे‑बाएँ मूल) के आदी हैं, तो यह पहले उल्टा लग सकता है।

उन्नत एनोटेशन तकनीकें

कई प्रकार के एनोटेशन

आप केवल एरिया एनोटेशन तक सीमित नहीं हैं। विभिन्न प्रकार जोड़ने का तरीका यहाँ है:

import com.groupdocs.annotation.models.Rectangle;
import com.groupdocs.annotation.models.annotationmodels.AreaAnnotation;

public class AddAnnotations {
    public static void main(String[] args) throws Exception {
        InputStream stream = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/input.pdf");
        final Annotator annotator = new Annotator(stream);

        // Area annotation with custom styling
        AreaAnnotation area = new AreaAnnotation();
        area.setBox(new Rectangle(100, 100, 100, 100));
        area.setBackgroundColor(65535); // Semi-transparent cyan
        area.setOpacity(0.7); // 70% opacity for subtle highlighting

        annotator.add(area);
        
        String outputPath = "YOUR_OUTPUT_DIRECTORY/AnnotatedDocument.pdf";
        annotator.save(outputPath);
        annotator.dispose();
    }
}

रंग प्रबंधन टिप्स

ARGB रंग जटिल हो सकते हैं। यहाँ कुछ सामान्य मान हैं:

  • 65535 = सियान
  • 16711680 = लाल
  • 65280 = हरा
  • 255 = नीला
  • 16777215 = सफ़ेद
  • 0 = काला

Pro tip: आवश्यक सटीक मान प्राप्त करने के लिए ऑनलाइन ARGB कलर कैलकुलेटर का उपयोग करें, या हेक्स रंग को Integer.parseInt("FF0000", 16) से लाल के लिए बदलें।

वास्तविक‑दुनिया के अनुप्रयोग जिन्हें आप बना सकते हैं

दस्तावेज़ समीक्षा प्रणाली

कानूनी दस्तावेज़ समीक्षाओं, अनुबंध प्रबंधन, या शैक्षणिक पेपर सहयोग के लिए उत्तम:

// Example: Highlighting important clauses in contracts
AreaAnnotation contractClause = new AreaAnnotation();
contractClause.setBox(new Rectangle(50, 200, 400, 50));
contractClause.setBackgroundColor(16776960); // Yellow highlight
contractClause.setMessage("Review this clause for compliance");

क्वालिटी एश्योरेंस वर्कफ़्लोज़

तकनीकी दस्तावेज़ में समस्याओं को चिह्नित करने के लिए एनोटेशन का उपयोग करें:

// Example: Marking sections that need updates
AreaAnnotation updateNeeded = new AreaAnnotation();
updateNeeded.setBox(new Rectangle(100, 300, 300, 100));
updateNeeded.setBackgroundColor(16711680); // Red for urgent attention
updateNeeded.setMessage("Content outdated - requires immediate update");

शैक्षिक उपकरण

इंटरैक्टिव लर्निंग सामग्री बनाएं:

// Example: Highlighting key concepts in textbooks
AreaAnnotation keyconcept = new AreaAnnotation();
keyContent.setBox(new Rectangle(75, 150, 450, 75));
keyContent.setBackgroundColor(65280); // Green for important information
keyContent.setMessage("Key concept: Remember this for the exam!");

प्रदर्शन अनुकूलन: प्रोडक्शन‑रेडी टिप्स

मेमोरी मैनेजमेंट सर्वश्रेष्ठ प्रथाएँ

Always use try‑with‑resources जब संभव हो:

public void annotateDocument(InputStream documentStream) throws Exception {
    try (Annotator annotator = new Annotator(documentStream)) {
        AreaAnnotation area = new AreaAnnotation();
        area.setBox(new Rectangle(100, 100, 100, 100));
        area.setBackgroundColor(65535);
        
        annotator.add(area);
        annotator.save("output.pdf");
        // annotator.dispose() called automatically
    }
}

बड़े दस्तावेज़ों की बैच प्रोसेसिंग

जब कई दस्तावेज़ प्रोसेस कर रहे हों:

public void processBatch(List<InputStream> documents) throws Exception {
    for (InputStream doc : documents) {
        try (Annotator annotator = new Annotator(doc)) {
            // Process each document
            // Memory is properly released after each iteration
        }
    }
}

स्ट्रीम अनुकूलन

बड़े फ़ाइलों के लिए, बफ़रिंग पर विचार करें:

import java.io.BufferedInputStream;

InputStream bufferedStream = new BufferedInputStream(
    new FileInputStream("large-document.pdf"), 
    8192 // 8KB buffer
);

सामान्य समस्याएँ और उनके समाधान

समस्या 1: “Document format not supported”

Problem: आप ऐसी फ़ाइल को एनोटेट करने की कोशिश कर रहे हैं जिसे GroupDocs.Annotation पहचान नहीं पाता।

Solution: दस्तावेज़ में समर्थित फ़ॉर्मैट्स की जाँच करें। अधिकांश सामान्य फ़ॉर्मैट्स (PDF, DOCX, PPTX) समर्थित हैं, लेकिन कुछ विशेष फ़ॉर्मैट्स नहीं हो सकते।

समस्या 2: बड़े फ़ाइलों के साथ OutOfMemoryError

Problem: बड़े PDF प्रोसेस करते समय आपका एप्लिकेशन क्रैश हो जाता है।

Solutions:

  1. JVM हीप साइज बढ़ाएँ: -Xmx2g
  2. दस्तावेज़ों को छोटे बैचों में प्रोसेस करें
  3. सुनिश्चित करें कि आप dispose() सही ढंग से कॉल कर रहे हैं

समस्या 3: एनोटेशन गलत स्थान पर दिखते हैं

Problem: आपके एनोटेशन अप्रत्याशित स्थानों पर दिख रहे हैं।

Solution: अपने कॉर्डिनेट सिस्टम को दोबारा जाँचें। याद रखें कि PDF कॉर्डिनेट्स शीर्ष‑बाएँ कोने से शुरू होते हैं, और इकाइयाँ पॉइंट्स में होती हैं (1 इंच = 72 पॉइंट्स)।

समस्या 4: रंग सही ढंग से नहीं दिख रहे हैं

Problem: एनोटेशन के रंग आपके अपेक्षित रंग से मेल नहीं खाते।

Solution: सुनिश्चित करें कि आप ARGB फ़ॉर्मैट सही ढंग से उपयोग कर रहे हैं। अल्फा चैनल पारदर्शिता को प्रभावित करता है, जिससे रंग अपेक्षा से अलग दिख सकते हैं।

प्रोडक्शन उपयोग के लिए सर्वोत्तम प्रथाएँ

1. त्रुटि संभालना

प्रोडक्शन कोड में उचित अपवाद हैंडलिंग को कभी न छोड़ें:

public boolean annotateDocument(InputStream input, String outputPath) {
    try (Annotator annotator = new Annotator(input)) {
        AreaAnnotation area = new AreaAnnotation();
        area.setBox(new Rectangle(100, 100, 100, 100));
        area.setBackgroundColor(65535);
        
        annotator.add(area);
        annotator.save(outputPath);
        return true;
    } catch (Exception e) {
        logger.error("Failed to annotate document: " + e.getMessage(), e);
        return false;
    }
}

2. कॉन्फ़िगरेशन प्रबंधन

सामान्य सेटिंग्स के लिए कॉन्फ़िगरेशन फ़ाइलों का उपयोग करें:

# application.properties
annotation.default.color=65535
annotation.default.opacity=0.7
annotation.output.directory=/path/to/output

3. वैधता जाँच

इनपुट्स को हमेशा वैधता जाँचें:

public void validateAnnotationParameters(Rectangle box) {
    if (box.getWidth() <= 0 || box.getHeight() <= 0) {
        throw new IllegalArgumentException("Annotation dimensions must be positive");
    }
    if (box.getX() < 0 || box.getY() < 0) {
        throw new IllegalArgumentException("Annotation position must be non-negative");
    }
}

अपने एनोटेशन कोड का परीक्षण

यूनिट टेस्टिंग एप्रोच

@Test
public void testAreaAnnotationCreation() throws Exception {
    // Given
    InputStream testDocument = getTestDocumentStream();
    
    // When
    try (Annotator annotator = new Annotator(testDocument)) {
        AreaAnnotation area = new AreaAnnotation();
        area.setBox(new Rectangle(100, 100, 100, 100));
        area.setBackgroundColor(65535);
        
        annotator.add(area);
        
        // Then
        // Verify annotation was added successfully
        // (implementation depends on your testing framework)
    }
}

लोकप्रिय फ्रेमवर्क्स के साथ इंटीग्रेशन

Spring Boot pdf annotation इंटीग्रेशन

@Service
public class DocumentAnnotationService {
    
    @Autowired
    private DocumentRepository documentRepository;
    
    public String annotateDocument(Long documentId, List<AnnotationRequest> annotations) {
        try (InputStream docStream = documentRepository.getDocumentStream(documentId);
             Annotator annotator = new Annotator(docStream)) {
            
            for (AnnotationRequest request : annotations) {
                AreaAnnotation area = createAnnotationFromRequest(request);
                annotator.add(area);
            }
            
            String outputPath = generateOutputPath(documentId);
            annotator.save(outputPath);
            
            return outputPath;
        } catch (Exception e) {
            throw new DocumentAnnotationException("Failed to annotate document", e);
        }
    }
}

आगे क्या: अन्वेषण के लिए उन्नत फीचर्स

एक बार जब आप इस ट्यूटोरियल में कवर किए गए बुनियादी चीज़ों में निपुण हो जाएँ, तो इनका अन्वेषण करने पर विचार करें:

  1. Text Annotations – विशिष्ट टेक्स्ट पासेज़ में सीधे टिप्पणी और नोट्स जोड़ें।
  2. Shape Annotations – दस्तावेज़ तत्वों को हाइलाइट करने के लिए तीर, वृत्त, और अन्य आकार बनाएं।
  3. Watermarks – ब्रांडिंग या सुरक्षा उद्देश्यों के लिए कस्टम वॉटरमार्क जोड़ें।
  4. Annotation Extraction – विश्लेषण या माइग्रेशन के लिए दस्तावेज़ों से मौजूदा एनोटेशन पढ़ें।
  5. Custom Annotation Types – अपने विशेष उपयोग केस के लिए कस्टम एनोटेशन प्रकार बनाएं।

निष्कर्ष

अब आपके पास GroupDocs.Annotation का उपयोग करके Java PDF annotation में एक ठोस आधार है। स्ट्रीम के माध्यम से दस्तावेज़ लोड करने से लेकर एरिया एनोटेशन जोड़ने और प्रोडक्शन उपयोग के लिए अनुकूलन तक, आप मजबूत दस्तावेज़ एनोटेशन फीचर बनाने के लिए सुसज्जित हैं।

Key takeaways:

  • स्ट्रीम‑आधारित लोडिंग अधिकतम लचीलापन प्रदान करती है।
  • उचित रिसोर्स मैनेजमेंट मेमोरी लीक को रोकता है।
  • ARGB रंग फ़ॉर्मैट उपस्थिति पर सटीक नियंत्रण देता है।
  • त्रुटि संभालना और वैधता जाँच प्रोडक्शन सिस्टम के लिए महत्वपूर्ण हैं।

यहाँ सीखी गई तकनीकें सरल प्रूफ़‑ऑफ़‑कॉन्सेप्ट से एंटरप्राइज़‑ग्रेड दस्तावेज़ प्रबंधन सिस्टम तक स्केल करती हैं। चाहे आप सहयोगी समीक्षा प्लेटफ़ॉर्म बना रहे हों या मौजूदा सॉफ़्टवेयर में एनोटेशन फीचर जोड़ रहे हों, अब आपके पास इसे सही तरीके से करने के उपकरण हैं।

अक्सर पूछे जाने वाले प्रश्न

Q: GroupDocs.Annotation के लिए न्यूनतम जावा संस्करण क्या है?
A: न्यूनतम Java 8 है, लेकिन बेहतर प्रदर्शन और मेमोरी मैनेजमेंट के लिए Java 11+ अनुशंसित है।

Q: क्या मैं PDF के अलावा अन्य दस्तावेज़ों को एनोटेट कर सकता हूँ?
A: बिल्कुल! GroupDocs.Annotation 50 से अधिक दस्तावेज़ फ़ॉर्मैट्स का समर्थन करता है, जिसमें DOCX, PPTX, XLSX, और विभिन्न इमेज फ़ॉर्मैट्स शामिल हैं।

Q: बहुत बड़े PDF फ़ाइलों को मेमोरी खत्म हुए बिना कैसे संभालूँ?
A: इन रणनीतियों का उपयोग करें: JVM हीप साइज बढ़ाएँ (-Xmx4g), दस्तावेज़ों को छोटे बैचों में प्रोसेस करें, और हमेशा Annotator इंस्टेंस को सही ढंग से डिस्पोज़ करें।

Q: क्या एनोटेशन रंग और पारदर्शिता को कस्टमाइज़ करना संभव है?
A: हाँ! सटीक नियंत्रण के लिए ARGB रंग मानों का उपयोग करें। उदाहरण के लिए, setBackgroundColor(65535) सियान सेट करता है, और setOpacity(0.5) इसे 50 % पारदर्शी बनाता है।

Q: प्रोडक्शन उपयोग के लिए लाइसेंसिंग आवश्यकताएँ क्या हैं?
A: प्रोडक्शन डिप्लॉयमेंट के लिए आपको वैध GroupDocs.Annotation लाइसेंस चाहिए। विकास और परीक्षण के लिए मुफ्त ट्रायल उपयोग किया जा सकता है, लेकिन व्यावसायिक एप्लिकेशन के लिए खरीदा गया लाइसेंस आवश्यक है।

Additional Resources


अंतिम अपडेट: 2026-03-27
परीक्षित संस्करण: GroupDocs.Annotation 25.2
लेखक: GroupDocs