Δημιουργία σημείων σχολιασμού PDF και αποθήκευση του PDF με σημειώσεις με Java Οδηγός
Η προσθήκη διαδραστικών σημείων σε PDF δεν ήταν ποτέ πιο εύκολη. Σε αυτόν τον οδηγό θα δημιουργήσετε αρχεία PDF με σημειώσεις σημείου, θα τα τοποθετήσετε με ακρίβεια και στη συνέχεια θα αποθηκεύσετε έγγραφα PDF με σημειώσεις χρησιμοποιώντας το GroupDocs.Annotation for Java. Είτε δημιουργείτε ένα εργαλείο νομικής ανασκόπησης, μια πλατφόρμα e‑learning ή έναν συνεργατικό προβολέα, οι σημειώσεις σημείου σας επιτρέπουν να επισημάνετε ακριβείς θέσεις χωρίς να καλύπτετε το περιβάλλον περιεχόμενο.
Γρήγορες Απαντήσεις
save γράφει το PDF με σημειώσεις στο καθορισμένο μονοπάτι εξόδου.
- Ποια βιβλιοθήκη προσθέτει σημειώσεις σημείου; GroupDocs.Annotation for Java.
- Μπορώ να αποθηκεύσω το PDF με σημειώσεις; Ναι—καλέστε
annotator.save(outputPath). - Πώς να διαχειριστείτε πολλά αρχεία; Χρησιμοποιήστε το πρότυπο παρτίδας σχολιασμού PDF που εμφανίζεται αργότερα.
- Χρειάζομαι άδεια; Μια δωρεάν δοκιμή λειτουργεί για ανάπτυξη· απαιτείται πλήρης άδεια για παραγωγή.
- Είναι συμβατό με Java 8; Ναι—υποστηρίζεται Java 8+.
Τι είναι μια Σημείωση Σημείου;
Μια σημείωση σημείου είναι ένας μικροσκοπικός δείκτης που τοποθετείται σε μια μοναδική συντεταγμένη X‑Y σε μια σελίδα PDF. Σας επιτρέπει να εντοπίζετε ακριβείς θέσεις—όπως αριθμούς αναφοράς, καρφίτσες χάρτη ή αγκίστρια σχολίων—χωρίς να καλύπτετε το περιβάλλον κείμενο ή εικόνες. Επειδή καταλαμβάνει μόνο μια περιοχή μεγέθους ενός pixel, είναι ιδανική για εργασίες ακρίβειας όπως η σύνδεση ενός διαγράμματος με μια σημείωση ή η επισήμανση μιας συγκεκριμένης ρήτρας σε σύμβαση.
Γιατί να Χρησιμοποιήσετε Σημειώσεις Σημείου;
Μπορείτε άμεσα να καθοδηγήσετε τους αναγνώστες στην ακριβή θέση που χρειάζεται προσοχή, διατηρώντας ταυτόχρονα την οπτική ακεραιότητα του εγγράφου. Οι σημειώσεις σημείου υποστηρίζουν επίσης νήματα απαντήσεων, καθιστώντας τες ιδανικές για συνεργατικούς κύκλους ανασκόπησης. Επιπλέον, το GroupDocs.Annotation μπορεί να επεξεργαστεί 30+ τύπους σημειώσεων και να χειριστεί PDF έως 2 GB χωρίς να φορτώνει ολόκληρο το αρχείο στη μνήμη, κάτι που σημαίνει ότι μπορείτε να κλιμακώσετε σενάρια παρτίδας σχολιασμού PDF με σιγουριά.
Προαπαιτούμενα
- Java Development Kit (JDK): 8 ή νεότερο (συνιστάται 11+).
- IDE: IntelliJ IDEA, Eclipse ή VS Code με επεκτάσεις Java.
- Εργαλείο Κατασκευής: Maven (τα παραδείγματα χρησιμοποιούν Maven).
- GroupDocs.Annotation for Java: Θα το προσθέσουμε στο
pom.xmlσας. - Δοκιμαστικό PDF: Οποιοδήποτε αναγνώσιμο αρχείο PDF.
Συμβουλή: Επιλέξτε ένα PDF που περιέχει τόσο κείμενο όσο και εικόνες ώστε να μπορείτε άμεσα να δείτε πώς το σημείο τοποθετείται σε σχέση με διαφορετικούς τύπους περιεχομένου.
Ρύθμιση του GroupDocs.Annotation για Java
Απλή Διαμόρφωση Maven
Προσθέστε την ακόλουθη εξάρτηση στο pom.xml σας. Η διεύθυνση URL του αποθετηρίου είναι ειδική για το GroupDocs:
<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>
Απόκτηση Άδειας
Ακολουθεί πώς να αποκτήσετε τη σωστή άδεια για το έργο σας:
- Διαδρομή Δωρεάν Δοκιμής: Ιδανική για πρωτοτυποποίηση και εκμάθηση. Κατεβάστε από GroupDocs’ website και θα λάβετε αποτελέσματα με υδατογράφημα (ιδανικό για ανάπτυξη).
- Προσωρινή Άδεια: Χρειάζεστε μια επίδειξη χωρίς υδατογραφήματα; Πάρτε μια 30‑ήμερη προσωρινή άδεια εδώ.
- Πλήρης Άδεια: Έτοιμοι για παραγωγή; Ελέγξτε τις τιμές στο GroupDocs store.
Η Πρώτη Σας Περίπτωση Annotator
Annotator είναι η κύρια κλάση στο GroupDocs.Annotation που φορτώνει, τροποποιεί και αποθηκεύει έγγραφα PDF. Το παρακάτω απόσπασμα δείχνει μια ελάχιστη αρχικοποίηση για να επαληθεύσετε ότι το περιβάλλον σας είναι σωστά ρυθμισμένο:
import com.groupdocs.annotation.Annotator;
public class AnnotationSetup {
public static void main(String[] args) {
// Initialize Annotator with the input document path
Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/input.pdf");
System.out.println("Annotator initialized successfully!");
// Always clean up resources
annotator.dispose();
}
}
Κοινό Πρόβλημα Ρύθμισης: Εάν αντιμετωπίσετε ClassNotFoundException, βεβαιωθείτε ότι το Maven έχει κατεβάσει όλες τις εξαρτήσεις και ανανεώστε το έργο στο IDE σας.
Οδηγός Υλοποίησης Βήμα‑Βήμα
Τώρα ας περάσουμε από τη πλήρη ροή εργασίας για τη δημιουργία και αποθήκευση σημειώσεων σημείου.
Κατανόηση των Σημειώσεων Σημείου Πρώτα
Πριν βουτήξουμε στον κώδικα, θυμηθείτε ότι οι σημειώσεις σημείου είναι δείκτες ενός pixel. Αποθηκεύονται ως αντικείμενα PointAnnotation, το καθένα φέρει συντεταγμένες, ρυθμίσεις εμφάνισης και προαιρετικά νήματα απαντήσεων.
Βήμα 1: Αρχικοποίηση του Annotator
Πρώτα, φορτώστε το PDF που θέλετε να σχολιάσετε. Η χρήση απόλυτων διαδρομών κατά την ανάπτυξη αποφεύγει σφάλματα “file not found”; μπορείτε να μεταβείτε σε σχετικές διαδρομές αργότερα.
import com.groupdocs.annotation.Annotator;
import java.util.Calendar;
public class PointAnnotationExample {
public static void main(String[] args) {
final Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/input.pdf");
// We'll build on this foundation
annotator.dispose();
}
}
Βήμα 2: Δημιουργία Απαντήσεων Σημειώσεων (Προαιρετικό αλλά Ισχυρό)
AnnotationReply σας επιτρέπει να συνδέσετε μια νήμα συζήτησης σε οποιαδήποτε σημείωση. Αυτό είναι χρήσιμο για συνεργατικές ανασκοπήσεις όπου πολλοί ενδιαφερόμενοι συζητούν ένα ενιαίο σημείο.
import com.groupdocs.annotation.models.Reply;
import java.util.ArrayList;
// Create meaningful replies that add context
Reply reply1 = new Reply();
reply1.setComment("This section needs clarification");
reply1.setRepliedOn(Calendar.getInstance().getTime());
Reply reply2 = new Reply();
reply2.setComment("Agreed, let's discuss this in the next review");
reply2.setRepliedOn(Calendar.getInstance().getTime());
java.util.List<Reply> replies = new ArrayList<>();
replies.add(reply1);
replies.add(reply2);
Πότε να Χρησιμοποιήσετε Απαντήσεις: Ιδανικό για νομικές ή μηχανικές ανασκοπήσεις όπου κάθε εντοπισμένο ζήτημα μπορεί να δημιουργήσει νήμα συζήτησης. Παραλείψτε αυτό το βήμα για απλούς δείκτες αναφοράς.
Βήμα 3: Δημιουργία και Τοποθέτηση της Σημείωσης Σημείου Σας
PointAnnotation είναι η κλάση που αντιπροσωπεύει έναν ενιαίο δείκτη. Απαιτεί συντεταγμένες X‑Y, αριθμό σελίδας και προαιρετικές οπτικές ιδιότητες όπως χρώμα και μέγεθος.
import com.groupdocs.annotation.models.Rectangle;
import com.groupdocs.annotation.models.annotationmodels.PointAnnotation;
// Create your point annotation with precise positioning
PointAnnotation point = new PointAnnotation();
point.setBox(new Rectangle(100, 100, 0, 0)); // X=100px, Y=100px from top-left
point.setCreatedOn(Calendar.getInstance().getTime());
point.setMessage("Important reference point - check the calculation here");
point.setPageNumber(0); // Remember: page numbering starts at 0!
point.setReplies(replies); // Attach those replies we created
// Add the annotation to your document
annotator.add(point);
Εξήγηση του Συστήματος Συντεταγμένων: Η αρχή (0,0) είναι η πάνω‑αριστερή γωνία της σελίδας. Το X αυξάνεται προς τα δεξιά, το Y αυξάνεται προς τα κάτω. Ορισμένοι προβολείς χρησιμοποιούν αρχή κάτω‑αριστερά, οπότε πάντα επαληθεύστε με δοκιμαστική συντεταγμένη όπως (50, 50) πρώτα.
Βήμα 4: Αποθήκευση της Εργασίας και Καθαρισμός
Η αποθήκευση διατηρεί τις σημειώσεις στο δίσκο. Η παράλειψη αυτού του βήματος σημαίνει ότι όλες οι αλλαγές παραμένουν μόνο στη μνήμη.dispose απελευθερώνει τους πόρους που κρατά η παρουσία Annotator.
import java.io.File;
String outputPath = "YOUR_OUTPUT_DIRECTORY/AddPointAnnotation.pdf";
annotator.save(outputPath);
System.out.println("Point annotation added successfully!");
System.out.println("Output saved to: " + outputPath);
// Always clean up to prevent memory leaks
annotator.dispose();
Συχνά Προβλήματα και Πώς να Τα Διορθώσετε
Προβλήματα Διαδρομής Αρχείου
Πρόβλημα: FileNotFoundException ακόμη και όταν το αρχείο υπάρχει.
Λύση: Χρησιμοποιήστε απόλυτες διαδρομές κατά την ανάπτυξη. Στα Windows, διαφύγετε τις ανάστροφες κάθετες ("C:\\Docs\\input.pdf") ή χρησιμοποιήστε κάθετες μπροστά ("C:/Docs/input.pdf").
Διαρροές Μνήμης στην Παραγωγή
Πρόβλημα: Η εφαρμογή επιβραδύνεται όταν επεξεργάζεται πολλά PDF.
Λύση: Πάντα καλέστε annotator.dispose() σε ένα μπλοκ finally ή χρησιμοποιήστε try‑with‑resources:
try {
Annotator annotator = new Annotator("input.pdf");
// Your annotation logic here
} finally {
if (annotator != null) {
annotator.dispose();
}
}
Σημειώσεις που Εμφανίζονται σε Λάθος Θέσεις
Πρόβλημα: Τα σημεία εμφανίζονται μακριά από την προοριζόμενη θέση.
Λύση: Επαληθεύστε το σύστημα συντεταγμένων. Δοκιμάστε με απλές συντεταγμένες (π.χ., (100, 100)) πριν χρησιμοποιήσετε δυναμικούς υπολογισμούς.
Συγκρούσεις Εξαρτήσεων
Πρόβλημα: NoSuchMethodError ή παρόμοια σφάλματα χρόνου εκτέλεσης.
Λύση: Βεβαιωθείτε ότι χρησιμοποιείτε τις συμβατές εκδόσεις των βιβλιοθηκών υποστήριξης που αναφέρονται στην τεκμηρίωση του GroupDocs.Annotation. Η βιβλιοθήκη λειτουργεί καλύτερα με συγκεκριμένες εκδόσεις των commons-io και log4j.
Προχωρημένες Περιπτώσεις Χρήσης και Καλές Πρακτικές
Στρατηγικές Έξυπνης Τοποθέτησης
Η σκληρή κωδικοποίηση συντεταγμένων λειτουργεί για demos, αλλά ο κώδικας παραγωγής θα πρέπει να υπολογίζει τις θέσεις δυναμικά—π.χ., βάσει των περιοχών κειμένου ή των θέσεων εικόνων.
// Calculate positions based on page dimensions
// This makes your annotations responsive to different PDF sizes
Rectangle pageRect = annotator.getDocument().getPages().get(0).getBoundingRectangle();
double centerX = pageRect.getWidth() / 2;
double centerY = pageRect.getHeight() / 2;
PointAnnotation centeredPoint = new PointAnnotation();
centeredPoint.setBox(new Rectangle(centerX, centerY, 0, 0));
Επεξεργασία Παρτίδας Σχολιασμού PDF
Όταν χρειάζεται να σχολιάσετε δεκάδες ή εκατοντάδες PDF, τυλίξτε τη ροή εργασίας ενός εγγράφου σε βρόχο. Το παρακάτω πρότυπο δείχνει αποδοτική επεξεργασία παρτίδας ενώ επαναχρησιμοποιεί μια μοναδική παρουσία Annotator ανά έγγραφο.
public void annotateMultipleDocuments(List<String> documentPaths) {
for (String path : documentPaths) {
try (Annotator annotator = new Annotator(path)) {
// Add your annotations
PointAnnotation point = createStandardAnnotation();
annotator.add(point);
// Save with systematic naming
String outputPath = path.replace(".pdf", "_annotated.pdf");
annotator.save(outputPath);
}
}
}
Ενσωμάτωση με Εφαρμογές Web
Αποκτήστε ένα REST endpoint που λαμβάνει φορτία JSON που περιγράφουν σημεία (σελίδα, X, Y, χρώμα) και επιστρέφει το ρεύμα του PDF με σημειώσεις. Αυτό διατηρεί το front‑end σας ελαφρύ και σας επιτρέπει να κεντρικοποιήσετε την άδεια.
@Service
public class PDFAnnotationService {
public String addPointAnnotation(String documentPath, int x, int y, String message) {
try (Annotator annotator = new Annotator(documentPath)) {
PointAnnotation point = new PointAnnotation();
point.setBox(new Rectangle(x, y, 0, 0));
point.setMessage(message);
point.setPageNumber(0);
String outputPath = generateOutputPath(documentPath);
annotator.save(outputPath);
return outputPath;
} catch (Exception e) {
throw new DocumentAnnotationException("Failed to add annotation", e);
}
}
}
Συμβουλές Βελτιστοποίησης Απόδοσης
Καλές Πρακτικές Διαχείρισης Μνήμης
Αποτελεσματική Φόρτωση Εγγράφων: Για PDF μεγαλύτερα από 200 MB, φορτώστε τα σελίδα‑με‑σελίδα για να διατηρήσετε τη χρήση μνήμης χαμηλή.
// For large documents, consider streaming approaches
Annotator annotator = new Annotator("large-document.pdf");
try {
// Process annotations for specific pages only
annotator.add(annotation, 0); // Add to page 0 only
} finally {
annotator.dispose();
}
Καθαρισμός Πόρων: Σε υπηρεσίες υψηλής διαπερατότητας, παρακολουθείτε τη χρήση heap και καλείτε System.gc() με μέτρο μετά το κλείσιμο του annotator.
public class AnnotationProcessor {
private static final int BATCH_SIZE = 100;
public void processBatch(List<AnnotationTask> tasks) {
for (int i = 0; i < tasks.size(); i++) {
processTask(tasks.get(i));
// Cleanup every batch to prevent memory buildup
if (i % BATCH_SIZE == 0) {
System.gc(); // Suggest garbage collection
}
}
}
}
Βελτιστοποίηση για Διαφορετικούς Τύπους PDF
- PDF με Πολλά Κείμενα: Χρησιμοποιήστε
PageTextExtractorγια να εντοπίσετε λέξεις-κλειδιά και να τοποθετήσετε σημεία σε σχέση με αυτές τις λέξεις. - PDF με Πολλές Εικόνες: Λάβετε υπόψη τις διαφορές DPI· μετατρέψτε τις διαστάσεις εικόνας σε μονάδες PDF (1 pt = 1/72 in).
- Μεγάλα PDF (500+ σελίδες): Επεξεργαστείτε τις σημειώσεις σε παρτίδες των 50 σελίδων, στη συνέχεια συγχωνεύστε τα αποτελέσματα για να αποφύγετε τη φόρτωση ολόκληρου του αρχείου.
Πραγματικές Εφαρμογές και Παραδείγματα
Ροές Εργασίας Ανασκόπησης Εγγράφων
Οι νομικές ομάδες συχνά χρειάζονται να επισημάνουν ακριβείς αριθμούς ρήρων. Οι σημειώσεις σημείου επιτρέπουν στους αναγνώστες να κάνουν κλικ σε μια καρφίτσα και να δουν ένα νήμα σχολίων που είναι συνδεδεμένο με αυτή τη ρήτρα.
// Example: Mark contract clauses for review
PointAnnotation clauseMarker = new PointAnnotation();
clauseMarker.setMessage("Clause 4.2 - Review liability terms");
clauseMarker.setBox(new Rectangle(245, 380, 0, 0)); // Precise clause location
Ενίσχυση Εκπαιδευτικού Περιεχομένου
Προσθέστε διαδραστικά hotspots σε e‑books που συνδέονται με συμπληρωματικά βίντεο ή κουίζ, μετατρέποντας στατικά PDF σε ελκυστικές μονάδες μάθησης.
// Mark important concepts for student attention
PointAnnotation conceptHighlight = new PointAnnotation();
conceptHighlight.setMessage("Key Concept: Remember this for the exam!");
conceptHighlight.setBox(new Rectangle(150, 220, 0, 0));
Τεχνική Τεκμηρίωση
Οι μηχανικοί μπορούν να σχολιάσουν σχήματα με ακριβή σημεία αναφοράς που συνδέονται με λεπτομερείς προδιαγραφές αποθηκευμένες αλλού.
// Point out important implementation details
PointAnnotation implementationNote = new PointAnnotation();
implementationNote.setMessage("Critical: This parameter is required in production");
implementationNote.setBox(new Rectangle(300, 150, 0, 0));
Συχνές Ερωτήσεις
getAnnotations επιστρέφει όλες τις σημειώσεις στο έγγραφο, και delete αφαιρεί μια σημείωση με το ID της.
Ε: Μπορώ να μορφοποιήσω διαφορετικά τις σημειώσεις σημείου μου;
Α: Ναι! Μπορείτε να προσαρμόσετε το χρώμα, το μέγεθος, τη διαφάνεια και ακόμη να προσθέσετε ένα προσαρμοσμένο εικονίδιο ορίζοντας τις ιδιότητες appearance στο αντικείμενο PointAnnotation.
point.setPenColor(1); // Different color options
point.setOpacity(0.8); // Transparency level
Ε: Πώς να διαχειριστώ διαφορετικά μεγέθη σελίδων PDF;
Α: Υπολογίστε σχετικές θέσεις βάσει του πλάτους και του ύψους της σελίδας (π.χ., x = pageWidth * 0.25). Αυτό εξασφαλίζει ότι η σημείωση κλιμακώνεται σωστά σε A4, Letter και προσαρμοσμένα μεγέθη.
Ε: Μπορώ να προσθέσω πολλαπλά σημεία σε μία ενέργεια;
Α: Απόλυτα. Δημιουργήστε μια λίστα από αντικείμενα PointAnnotation, προσθέστε τα στον annotator και καλέστε save() μία φορά—αυτό μειώνει το φόρτο I/O.
annotator.add(point1);
annotator.add(point2);
annotator.add(point3);
annotator.save(outputPath);
Ε: Ποιος είναι ο αντίκτυπος στην απόδοση όταν προστίθενται πολλές σημειώσεις;
Α: Κάθε σημείωση προσθέτει ελάχιστο χρόνο επεξεργασίας, αλλά η αποθήκευση ενός εγγράφου με εκατοντάδες σημεία μπορεί να αυξήσει την καθυστέρηση εγγραφής έως και 30 %. Ομαδοποιήστε τις αποθηκεύσεις ή χρησιμοποιήστε ασύγχρονο I/O για μεγάλες παρτίδες.
Ε: Μπορώ να αφαιρέσω ή να τροποποιήσω σημειώσεις μετά την προσθήκη τους;
Α: Ναι. Ανακτήστε τις υπάρχουσες σημειώσεις μέσω annotator.getAnnotations(), τροποποιήστε τις ιδιότητές τους ή καλέστε annotator.delete(annotationId) πριν αποθηκεύσετε.
Annotator annotator = new Annotator("protected.pdf", "password");
Ε: Λειτουργούν οι σημειώσεις σημείου με PDF προστατευμένα με κωδικό;
Α: Ναι, αλλά πρέπει να παρέχετε τον κωδικό κατά τη δημιουργία της παρουσίας Annotator.
Επόμενα Βήματα και Προχωρημένα Χαρακτηριστικά
Τώρα που έχετε κατακτήσει τις σημειώσεις σημείου, εξερευνήστε αυτές τις πρόσθετες δυνατότητες:
- Σημειώσεις περιοχής για επισήμανση μεγαλύτερων τμημάτων.
- Σημειώσεις κειμένου για ενσωματωμένα σχόλια.
- Σημειώσεις βέλους για κατευθυντική καθοδήγηση.
- Προσαρμοσμένοι τύποι σημειώσεων για εξειδικευμένες περιπτώσεις όπως επικάλυψη δεδομένων GIS.
Προτεινόμενη Διαδρομή Μάθησης
- Ολοκληρώστε αυτό το tutorial και πειραματιστείτε με διαφορετικές στρατηγικές συντεταγμένων.
- Προσθέστε σημειώσεις περιοχής και κειμένου για να δημιουργήσετε ένα πλήρες UI ανασκόπησης.
- Δημιουργήστε έναν απλό web viewer που φορτώνει PDF με σημειώσεις κατόπιν ζήτησης.
- Ενσωματώστε το REST API του GroupDocs.Annotation για υποστήριξη πολλαπλών πλατφορμών.
Συμπέρασμα
Τώρα ξέρετε πώς να δημιουργήσετε αρχεία PDF με σημειώσεις σημείου, να τα τοποθετήσετε με ακρίβεια και να αποθηκεύσετε έγγραφα PDF με σημειώσεις χρησιμοποιώντας το GroupDocs.Annotation for Java. Από τη βασική ρύθμιση μέχρι την επεξεργασία παρτίδας και τη βελτιστοποίηση απόδοσης, αυτές οι τεχνικές θα σας βοηθήσουν να δημιουργήσετε ισχυρές, διαδραστικές λύσεις PDF που προσφέρουν πραγματική αξία στους τελικούς χρήστες.
Ξεκινήστε με ένα μόνο PDF, επαληθεύστε τις συντεταγμένες, και στη συνέχεια κλιμακώστε σε παρτίδες εργασιών ή web services. Το εκτενές API της βιβλιοθήκης και οι ισχυρές εγγυήσεις απόδοσης την καθιστούν αξιόπιστη επιλογή για ό,τι από μικρά εργαλεία μέχρι συστήματα διαχείρισης εγγράφων επιχειρηματικού επιπέδου.
Τελευταία Ενημέρωση: 2026-06-16
Δοκιμή Με: GroupDocs.Annotation 25.2
Συγγραφέας: GroupDocs
Πρόσθετοι Πόροι
- Τεκμηρίωση: GroupDocs.Annotation for Java Documentation
- Αναφορά API: Complete API Reference
- Λήψη Τελευταίας Έκδοσης: GroupDocs.Annotation Downloads
- Επιλογές Αγοράς: Licensing and Pricing
- Δωρεάν Δοκιμή: Try GroupDocs.Annotation
- Προσωρινή Άδεια: Get Temporary License
- Κοινότητα Υποστήριξης: GroupDocs Support Forum