Java PDF Σχόλιο – Εξαγωγή Σχολιασμένων Σελίδων PDF με GroupDocs

Εισαγωγή

Έχετε ποτέ δυσκολευτεί να κάνετε την ομάδα σας να παρέχει ουσιαστική ανατροφοδότηση σε έγγραφα PDF; Δεν είστε μόνοι. Οι παραδοσιακές διαδικασίες ανασκόπησης εγγράφων είναι εξαιρετικά αργές — ατελείωτες αλυσίδες email, σχόλια διασκορπισμένα σε διαφορετικές μορφές, και το αναπόφευκτο «Μπορείτε να επισημάνετε το τμήμα που αναφέρεστε;».

Σε αυτόν τον οδηγό θα μάθετε πώς να εξάγετε σχολιασμένες σελίδες PDF χρησιμοποιώντας το GroupDocs.Annotation για Java, μετατρέποντας στατικά PDF σε συνεργατικούς χώρους όπου τα μέλη της ομάδας μπορούν να επισημαίνουν, να σχολιάζουν και να σημειώνουν έγγραφα σε πραγματικό χρόνο.

Τι θα κατακτήσετε μέχρι το τέλος:

  • Ρύθμιση του GroupDocs.Annotation στο Maven project σας (με τον σωστό τρόπο)
  • Προσθήκη σχολίων περιοχής και έλλειψης με ακρίβεια pixel‑perfect
  • Διαμόρφωση επιλογών εξαγωγής σχολιασμένων σελίδων PDF για σύντομα PDF
  • Επίλυση των πιο συχνών προβλημάτων που αντιμετωπίζουν οι προγραμματιστές
  • Βελτιστοποίηση απόδοσης για περιβάλλοντα παραγωγής

Σύντομες Απαντήσεις

  • Ποιο είναι το κύριο όφελος της εξαγωγής σχολιασμένων σελίδων; Δημιουργεί ένα ελαφρύ PDF που περιέχει μόνο την σχετική ανατροφοδότηση, ιδανικό για ανασκοπήσεις και περιλήψεις.
  • Ποια έκδοση του Maven απαιτείται; Συνιστάται Maven 3.6+.
  • Χρειάζομαι άδεια για το GroupDocs.Annotation; Ναι, απαιτείται δοκιμαστική ή εμπορική άδεια για χρήση σε παραγωγή.
  • Μπορώ να σχολιάζω μορφές εκτός του PDF; Απόλυτα — το GroupDocs υποστηρίζει πάνω από 50 τύπους εγγράφων.
  • Πώς αποφεύγω προβλήματα μνήμης με μεγάλα PDF; Επεξεργαστείτε τις σελίδες σε παρτίδες, αυξήστε το heap του JVM και κλείστε πάντα το Annotator με try‑with‑resources.

Τι είναι η «εξαγωγή σχολιασμένων σελίδων PDF»;

Η εξαγωγή σχολιασμένων σελίδων PDF σημαίνει τη δημιουργία ενός νέου PDF που περιέχει μόνο τις σελίδες όπου υπάρχουν σχόλια. Αυτό μειώνει το μέγεθος του αρχείου, εστιάζει τους αναγνώστες στο σχετικό περιεχόμενο και απλοποιεί τον έλεγχο εκδόσεων.

Γιατί να εξάγετε σχολιασμένες σελίδες PDF;

  • Εστιασμένοι κύκλοι ανασκόπησης – οι αναγνώστες βλέπουν μόνο τις σελίδες που χρειάζονται προσοχή.
  • Μικρότερα αρχεία – ιδανικά για αποστολή μέσω email ή ανέβασμα στο web.
  • Ιχνηλάτες ελέγχου – μπορείτε να διατηρήσετε ένα καθαρό αρχείο όλων των σχολίων χωρίς την ακαταστασία των αμετάβλητων σελίδων.

Προαπαιτούμενα: Προετοιμασία Περιβάλλοντος

Πριν ξεκινήσουμε τον κώδικα, ας βεβαιωθούμε ότι όλα είναι σωστά ρυθμισμένα. Πιστέψτε με, 5 λεπτά εδώ θα σας εξοικονομήσουν ώρες εντοπισμού σφαλμάτων αργότερα.

Απαιτούμενες Βιβλιοθήκες και Εξαρτήσεις

Χρειάζεστε το GroupDocs.Annotation για Java στο project σας. Ακολουθεί η διαμόρφωση Maven που λειτουργεί (έχω δει πολλά tutorials με παρωχημένα URLs αποθετηρίων):

Maven Setup

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

Απαιτήσεις Συστήματος

  • Java Development Kit (JDK): Έκδοση 8 ή νεότερη (συνιστάται JDK 11+ για καλύτερη απόδοση)
  • Maven: Έκδοση 3.6+ για διαχείριση εξαρτήσεων
  • Μνήμη: Τουλάχιστον 2 GB RAM διαθέσιμη για την εφαρμογή σας (περισσότερο για μεγάλα PDF)

Προαπαιτούμενες Γνώσεις

Θα πρέπει να είστε εξοικειωμένοι με:

  • Βασικές έννοιες προγραμματισμού Java
  • Διαχείριση εξαρτήσεων Maven
  • Εργασία με λειτουργίες αρχείων (File I/O)

Μην ανησυχείτε αν δεν είστε ειδικός — θα εξηγήσω τα πάντα καθώς προχωράμε.

Ρύθμιση GroupDocs.Annotation για Java

Τώρα ας ρυθμίσουμε σωστά το GroupDocs.Annotation στο project σας. Εδώ πολλοί προγραμματιστές συναντούν το πρώτο εμπόδιο, γι’ αυτό δώστε προσοχή στις λεπτομέρειες.

Βήμα 1: Προσθήκη Εξάρτησης

Χρησιμοποιήστε τη διαμόρφωση Maven παραπάνω για να συμπεριλάβετε το GroupDocs.Annotation στο project σας. Μετά την προσθήκη στο pom.xml, εκτελέστε:

mvn clean install

Αν εμφανιστούν σφάλματα λήψης, ελέγξτε ξανά ότι το URL του αποθετηρίου είναι ακριβώς όπως φαίνεται παραπάνω.

Βήμα 2: Διαχείριση Άδειας (Σημαντικό!)

Εδώ κάτι που παραλείπουν τα περισσότερα tutorials: το 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 (όπως φαίνεται παραπάνω) για σωστό καθαρισμό των χειριστών αρχείων. Έχω δει πάρα πολλά leaks μνήμης από προγραμματιστές που ξεχνούν αυτό το βήμα.

Οδηγός Υλοποίησης: Προσθήκη Σχολίων Βήμα-Βήμα

Τώρα το διασκεδαστικό μέρος — ας προσθέσουμε πραγματικά σχόλια στα PDF σας. Θα εστιάσουμε σε δύο δημοφιλείς τύπους σχολίων που καλύπτουν τις περισσότερες περιπτώσεις χρήσης.

Προσθήκη Σχολίων Περιοχής (Ιδανικό για Επισήμανση Ενοτήτων)

Τα σχόλια περιοχής είναι φανταστικά όταν χρειάζεται να επισημάνετε ολόκληρες παραγράφους, ενότητες ή οποιοδήποτε ορθογώνιο τμήμα στο 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. Συνηθισμένα χρώματα: Red = 16711680, Blue = 255, Green = 65280
  • setPageNumber(1): Οι σελίδες PDF είναι 1‑indexed, όχι 0‑indexed (συνηθισμένο λάθος!)

Πότε να Χρησιμοποιήσετε Σχόλια Περιοχής

  • Επισήμανση σημαντικών παραγράφων σε νομικά έγγραφα
  • Σήμανση ενοτήτων που χρειάζονται ανασκόπηση σε προδιαγραφές έργου
  • Επίκεντρο σε συγκεκριμένα δεδομένα σε εκθέσεις
  • Δημιουργία οπτικών ορίων γύρω από μπλοκ περιεχομένου

Προσθήκη Ελλειπτικών Σχολίων (Ιδανικό για Σημειώσεις)

Τα ελλειπτικά σχόλια είναι τέλεια όταν θέλετε να τραβήξετε την προσοχή σε συγκεκριμένα στοιχεία χωρίς τις σκληρές άκρες των ορθογωνίων. Είναι ιδιαίτερα χρήσιμα για την επισήμανση κυκλικών διαγραμμάτων, λογοτύπων ή για δημιουργία περιοχής «μαλακού φωτισμού».

Βήμα 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() πολλές φορές, ειδικά σε μεγάλα έγγραφα.

Πώς να Εξάγετε Σχολιασμένες Σελίδες PDF με το GroupDocs

Εδώ είναι μια ισχυρή δυνατότητα που παραβλέπουν πολλοί προγραμματιστές: μπορείτε να ρυθμίσετε το 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 frameworks)
  • Δοκιμάστε πρώτα με γνωστές τιμές συντεταγμένων
  • Λάβετε υπόψη τις διαστάσεις της σελίδας PDF όταν υπολογίζετε θέσεις

Πρόβλημα 3: OutOfMemoryError με Μεγάλα PDF

Συμπτώματα: Η εφαρμογή καταρρέει όταν επεξεργάζεται μεγάλα έγγραφα
Αιτία: Φόρτωση ολόκληρου του 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 vs 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;
    }
}

Συμβουλές Βελτιστοποίησης Απόδοσης

  1. Λειτουργίες παρτίδας – πάντα προσθέτετε πολλαπλά σχόλια ταυτόχρονα
  2. Lazy loading – φορτώνετε μόνο τις σελίδες που σχολιάζετε πραγματικά
  3. Συνδέσεις σε pool – επαναχρησιμοποιείτε αντικείμενα Annotator όταν είναι δυνατόν (με προσοχή)
  4. Ροή αρχείων – χρησιμοποιήστε streaming για πολύ μεγάλα έγγραφα

Πότε να Επιλέξετε GroupDocs έναντι Εναλλακτικών

Το GroupDocs.Annotation δεν είναι η μόνη επιλογή στην αγορά. Εδώ πότε έχει νόημα:

Επιλέξτε GroupDocs όταν:

  • Χρειάζεστε εκτεταμένους τύπους σχολίων (υπάρχουν πάνω από 20 υποστηριζόμενες μορφές)
  • Εργάζεστε με πολλαπλές μορφές εγγράφων πέρα από PDF
  • Απαιτείται υποστήριξη επιπέδου επιχείρησης και τεκμηρίωση
  • Κατασκευάζετε εμπορικές εφαρμογές (η αδειοδότηση είναι απλή)

Σκεφτείτε εναλλακτικές όταν:

  • Χρειάζεστε μόνο βασικό σχολιασμό PDF (το Apache PDFBox μπορεί να αρκέσει)
  • Υπάρχουν περιορισμοί προϋπολογισμού (υπάρχουν ανοιχτού κώδικα λύσεις)
  • Οι απαιτήσεις είναι απλές (υπερβολική πολυπλοκότητα για βασική επισήμανση)

Πρακτικές Εφαρμογές στον Πραγματικό Κόσμο

Ακολουθεί πώς ομάδες χρησιμοποιούν πραγματικά το Java PDF annotation σε παραγωγή:

Νομική Ανασκόπηση Εγγράφων

Τα νομικά γραφεία χρησιμοποιούν σχόλια περιοχής για επισήμανση ρήτρων συμβάσεων και ελλειπτικά σχόλια για σήμανση αμφισβητούμενων τμημάτων. Η λειτουργία επιλεκτικής εξαγωγής δημιουργεί καθαρές περιλήψεις για τον πελάτη.

Ακαδημαϊκή Ανατροφοδότηση Εργασιών

Τα πανεπιστήμια υλοποιούν συστήματα σχολιασμού όπου οι καθηγητές σημειώνουν υποβολές φοιτητών με διαφορετικά χρώματα: κόκκινο για γραμματική, μπλε για περιεχόμενο, πράσινο για δομή.

Ανασκόπηση Τεκμηρίωσης Λογισμικού

Οι ομάδες ανάπτυξης σχολιάζουν τεκμηρίωση API κατά τη διάρκεια των κύκλων ανασκόπησης, χρησιμοποιώντας σχόλια για σήμανση τμημάτων που χρειάζονται ενημέρωση ή διευκρίνιση.

Διαδικασίες Διασφάλισης Ποιότητας

Οι εταιρείες παραγωγής σχολιάζουν εκθέσεις επιθεώρησης, επισημαίνοντας ζητήματα συμμόρφωσης και σημειώνοντας διορθωτικές ενέργειες με διαφορετικούς τύπους σχολίων.

Σκέψεις Απόδοσης για Μεγάλης Κλίμακας Ανάπτυξη

Όταν είστε έτοιμοι να διαχειριστείτε σοβαρά φορτία, λάβετε υπόψη τα εξής:

Βελτιστοποίηση Χρήσης Μνήμης

  • Μέγεθος εγγράφου: PDF 10 MB ≈ 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 στο Java project μου;
Α: Προσθέστε την εξάρτηση Maven που φαίνεται στην ενότητα προαπαιτούμενων στο pom.xml, στη συνέχεια τρέξτε mvn clean install. Βεβαιωθείτε ότι το URL του αποθετηρίου είναι σωστό.

Ε: Μπορώ να σχολιάζω μορφές εκτός του PDF;
Α: Ναι! Το GroupDocs.Annotation υποστηρίζει πάνω από 50 μορφές, συμπεριλαμβανομένων Word, Excel, PowerPoint και αρχείων εικόνας. Το API παραμένει σχεδόν το ίδιο για όλες τις μορφές.

Ε: Ποιοι τύποι σχολίων είναι διαθέσιμοι εκτός από περιοχή και έλλειψη;
Α: Το GroupDocs υποστηρίζει 15+ τύπους όπως επισήμανση κειμένου, υπογράμμιση, διαγράμμιση, βέλη, υδατογραφήματα, αντικατάσταση κειμένου και σημειώσεις σημείου. Κάθε τύπος έχει συγκεκριμένες επιλογές στυλ.

Ε: Πώς διαχειρίζομαι μεγάλα PDF χωρίς να εξαντλήσω τη μνήμη;
Α: Επεξεργαστείτε τα έγγραφα σε τμήματα, αυξήστε το heap του JVM (-Xmx4g), χρησιμοποιήστε streaming όπου είναι δυνατόν και κλείστε πάντα τις παρουσίες Annotator. Για αρχεία άνω των 100 MB, σκεφτείτε την επεξεργασία σελίδας ανά σελίδα.

Ε: Μπορώ να προσαρμόσω την εμφάνιση των σχολίων πέρα από τα βασικά χρώματα;
Α: Απόλυτα. Μπορείτε να προσαρμόσετε διαφάνεια, στυλ περιγράμματος, ιδιότητες κειμένου και ακόμη να προσθέσετε προσαρμοσμένα εικονίδια. Κάθε τύπος σχολίου εκθέτει εκτενείς setters στυλ.

Σχετικοί Πόροι: GroupDocs.Annotation Documentation | Complete API Reference | GroupDocs Community Forum


Τελευταία Ενημέρωση: 2026-03-27
Δοκιμασμένο Με: GroupDocs.Annotation 25.2
Συγγραφέας: GroupDocs