Προσθήκη Σχολίων σε PDF από FTP σε .NET

Η φόρτωση ενός PDF από διακομιστή FTP και στη συνέχεια η προσθήκη σχολίων σε PDF είναι μια κοινή απαίτηση για επιχειρήσεις που διατηρούν παλαιά έγγραφα σε αποθήκευση on‑premises. Σε αυτό το tutorial θα δείτε ακριβώς πώς να κατεβάσετε ένα αρχείο από FTP, να το περάσετε στο GroupDocs.Annotation και να εφαρμόσετε επισημάνσεις, σχόλια ή σχήματα—όλα χωρίς ποτέ να γράψετε το αρχείο στο δίσκο πρώτα. Στο τέλος θα έχετε ένα επαναχρησιμοποιήσιμο πρότυπο που λειτουργεί με οποιοδήποτε PDF προσβάσιμο μέσω FTP και μπορεί να επεκταθεί σε άλλες μορφές που υποστηρίζει το GroupDocs.Annotation.

Γρήγορες Απαντήσεις

  • Τι καλύπτει αυτό το tutorial; Φόρτωση PDF από FTP και προσθήκη σχολίων με GroupDocs.Annotation για .NET.
  • Ποια κύρια λέξη-κλειδί στοχεύεται; add annotations to pdf.
  • Χρειάζομαι άδεια; Διατίθεται δωρεάν δοκιμή, αλλά η χρήση σε παραγωγή απαιτεί έγκυρη άδεια GroupDocs.Annotation.
  • Μπορώ να το χρησιμοποιήσω με .NET Core; Ναι, ο κώδικας λειτουργεί με .NET Framework 4.6.1+ και .NET Core 2.0+.
  • Υποστηρίζεται η πιστοποίηση; Το παράδειγμα δείχνει ανώνυμο FTP· μπορείτε να προσθέσετε NetworkCredential για ασφαλή πρόσβαση.

Τι είναι “add annotations to pdf”;

Add annotations to PDF σημαίνει προγραμματιστική εισαγωγή επισημάνσεων, σχολίων, σφραγίδων ή σχημάτων σε υπάρχον έγγραφο PDF. Το GroupDocs.Annotation για .NET παρέχει ένα υψηλού επιπέδου API που λειτουργεί απευθείας με ροές, ώστε να μπορείτε να τροποποιήσετε ένα PDF που βρίσκεται σε απομακρυσμένο διακομιστή FTP χωρίς πρώτα να το αποθηκεύσετε τοπικά.

Γιατί να φορτώνετε έγγραφα από FTP;

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

  • Κεντρική αποθήκευση: Πάνω από 70 % των παλαιών επιχειρήσεων εξακολουθούν να βασίζονται στο FTP για μαζικά αρχεία εγγράφων.
  • Επεξεργασία παρτίδας: Το FTP σας επιτρέπει να αντλήσετε εκατοντάδες αρχεία σε μία εργασία, επιτρέποντας αυτοματοποιημένες γραμμές επεξεργασίας σχολίων.
  • Συμμόρφωση: Το FTP on‑premises διατηρεί τα δεδομένα εντός ελεγχόμενων ζωνών δικτύου, ικανοποιώντας πολλές κανονιστικές απαιτήσεις.

Προαπαιτούμενα

  • Βασικές αρχές C# – άνεση με ροές και ασύγχρονες δομές.
  • GroupDocs.Annotation για .NET – κατεβάστε από τη επίσημη σελίδα κυκλοφορίας και δείτε τη γενική σελίδα κυκλοφορίας.
  • Διαπιστευτήρια FTP – κεντρικός υπολογιστής, όνομα χρήστη, κωδικός (αν απαιτείται) και άδεια ανάγνωσης των αρχείων-στόχων.
  • Εργαλεία ανάπτυξης – Visual Studio 2019+ και .NET Framework 4.6.1 ή .NET Core 2.0+.

Πώς να προσθέσετε σχόλια σε PDF από FTP σε .NET;

Σε αυτόν τον οδηγό θα κατεβάσουμε ένα PDF από διακομιστή FTP, θα περάσουμε τη ροή στο GroupDocs.Annotation, θα προσθέσουμε μια επισημάνση υπογράμμισης και θα αποθηκεύσουμε το σχολιασμένο αρχείο—όλα χωρίς να γράψουμε προσωρινά αρχεία στο δίσκο. Το AnnotationConfig ρυθμίζει το GroupDocs.Annotation να λειτουργεί με συγκεκριμένη ροή εγγράφου και μορφή. Το FtpWebRequest είναι μια κλάση .NET που διαχειρίζεται λειτουργίες FTP όπως η λήψη αρχείων. Το HighlightAnnotation αντιπροσωπεύει μια οπτική υπογράμμιση τοποθετημένη σε μια σελίδα PDF.

Βήμα 1: Ορισμός τοπικής διαδρομής εξόδου

Πρώτα, αποφασίστε πού θα αποθηκευτεί το σχολιασμένο PDF μετά την επεξεργασία. Η χρήση του Path.Combine εγγυάται σωστούς διαχωριστές διαδρομών σε Windows και Linux.

Σημείωση: Ο φάκελος εξόδου πρέπει να υπάρχει πριν καλέσετε το Save. Δημιουργήστε τον προγραμματιστικά αν χρειάζεται.

Βήμα 2: Ανάκτηση της ροής PDF από FTP

Η βοηθητική μέθοδος GetFileFromFtp ανοίγει ένα FtpWebRequest, διαβάζει την απάντηση σε ένα MemoryStream και επιστρέφει τη ροή στην αρχική θέση. Αυτή η ροή είναι αυτή που καταναλώνει το GroupDocs.Annotation.

Συμβουλή ασφαλείας: Σε παραγωγή, πάντα ορίστε request.Credentials = new NetworkCredential(user, pass) και ενεργοποιήστε SSL (EnableSsl = true) για προστασία των διαπιστευτηρίων.

Βήμα 3: Αρχικοποίηση του GroupDocs.Annotation με τη ροή

Το αντικείμενο AnnotationConfig ενημερώνει το GroupDocs.Annotation για τον τύπο αρχείου με τον οποίο εργάζεστε και ποια ροή να διαβάσει. Η άμεση μεταβίβαση της ροής αποφεύγει προσωρινά αρχεία και μειώνει το φόρτο I/O.

Βήμα 4: Προσθήκη επισημάνσης υπογράμμισης

Δημιουργήστε ένα HighlightAnnotation (ή οποιονδήποτε άλλο τύπο σχολίου) και ρυθμίστε τη θέση, το μέγεθος και το χρώμα του. Το παράδειγμα χρησιμοποιεί ένα έντονο κίτρινο (BackgroundColor = 65535) που ξεχωρίζει στα περισσότερα PDF.

Βήμα 5: Αποθήκευση του σχολιασμένου εγγράφου

Καλέστε annotation.Save(outputPath) για να γράψετε το ενημερωμένο PDF στην τοποθεσία που ορίσατε στο Βήμα 1. Η έξοδος της κονσόλας επιβεβαιώνει την επιτυχία και εμφανίζει την πλήρη διαδρομή.

Βήμα 6: Τυλίξτε όλα σε ένα try/catch

Οι λειτουργίες δικτύου είναι επιρρεπείς σε λήξη χρόνου και σφάλματα άδειας. Περιβάλλετε όλη τη ροή σε ένα μπλοκ try/catch, καταγράψτε την εξαίρεση και, προαιρετικά, επαναλάβετε τη λήψη.

Συνηθισμένα Προβλήματα Φόρτωσης FTP και Λύσεις

Λήξη χρόνου σύνδεσης

Οι διακομιστές FTP μπορεί να κλείσουν τις αδρανείς συνδέσεις μετά από σύντομο διάστημα. Αυξήστε το χρονικό όριο ορίζοντας request.Timeout = 30000 (30 δευτερόλεπτα) ή περισσότερο.

Αποτυχίες πιστοποίησης

Αν λάβετε σφάλμα 530, ελέγξτε ξανά το όνομα χρήστη/κωδικό και βεβαιωθείτε ότι ο λογαριασμός έχει άδεια ανάγνωσης για τον φάκελο προορισμού. Η μετάβαση σε FTPS (EnableSsl = true) συχνά λύνει προβλήματα που σχετίζονται με τα διαπιστευτήρια.

Τείχος προστασίας και παθητική λειτουργία

Πολλά εταιρικά τείχη προστασίας μπλοκάρουν το κανάλι δεδομένων που χρησιμοποιείται από ενεργό FTP. Ενεργοποιήστε την παθητική λειτουργία με request.UsePassive = true ώστε ο πελάτης να ανοίξει τη σύνδεση δεδομένων.

Διαχείριση μεγάλων αρχείων

Για PDF μεγαλύτερα από 100 MB, εξετάστε τη ροή της απάντησης απευθείας σε ένα προσωρινό αρχείο και, στη συνέχεια, ανοίξτε ένα FileStream για το GroupDocs.Annotation. Αυτό αποτρέπει το πλήρες αρχείο να βρίσκεται στη μνήμη.

Θεωρήσεις Ασφαλείας

  • Ποτέ μην κωδικοποιείτε σκληρά τα διαπιστευτήρια – αποθηκεύστε τα σε Azure Key Vault, AWS Secrets Manager ή μεταβλητές περιβάλλοντος.
  • Προτιμήστε FTPS ή SFTP – το απλό FTP μεταδίδει τα διαπιστευτήρια σε καθαρό κείμενο.
  • Επικυρώστε URLs – περιορίστε τον FTP κεντρικό υπολογιστή σε λευκή λίστα για να αποφύγετε επιθέσεις SSRF.
  • Καθαρίστε τα ονόματα αρχείων – απορρίψτε διαδρομές που περιέχουν .. ή απρόσμενους χαρακτήρες για να αποτρέψετε διείσδυση καταλόγου.

Πραγματικές Περιπτώσεις Χρήσης

  • Πύλες ελεγκτικής ανασκόπησης – Ανάκτηση PDF συμμόρφωσης από αρχείο FTP on‑prem, επιτρέψτε στους ελεγκτές να προσθέσουν σχόλια και αποθηκεύστε την σχολιασμένη έκδοση πίσω σε ασφαλή τοποθεσία.
  • Αυτοματοποίηση παλαιών αναφορών – Οι καθημερινές οικονομικές αναφορές καταλήγουν σε φάκελο FTP· η υπηρεσία αυτόματα υπογραμμίζει βασικά στοιχεία και στέλνει το σχολιασμένο αναφορά μέσω email στους ενδιαφερόμενους.
  • Βοηθοί μετεγκατάστασης – Κατά τη μεταφορά εγγράφων από FTP σε cloud DMS, σχολιάστε κάθε αρχείο με σημαίες κατάστασης μετεγκατάστασης χωρίς χειροκίνητη παρέμβαση.

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

  • Επαναχρησιμοποίηση αντικειμένων FtpWebRequest κατά την επεξεργασία πολλαπλών αρχείων για μείωση του κόστους χειραψίας.
  • Εκτέλεση κλήσεων FTP ασύγχρονα (await GetFileFromFtpAsync) για να διατηρηθούν τα νήματα UI ανταποκρινόμενα.
  • Προσωρινή αποθήκευση συχνά προσπελάσιμων PDF τοπικά για σύντομο χρονικό διάστημα (π.χ., 5 λεπτά) όταν το ίδιο αρχείο σχολιάζεται επανειλημμένα.
  • Ομαδική σχολιασμός – φορτώστε πολλά PDF σε ξεχωριστές στιγμές Annotation, εφαρμόστε σχόλια και, στη συνέχεια, αποθηκεύστε τα σε μία ενιαία λειτουργία I/O.

Συχνές Ερωτήσεις

Q: Μπορώ να σχολιάσω τύπους αρχείων εκτός από PDF;
A: Ναι, το GroupDocs.Annotation υποστηρίζει πάνω από 30 μορφές, συμπεριλαμβανομένων DOCX, PPTX και κοινών τύπων εικόνας, όλα μπορούν να φορτωθούν από FTP χρησιμοποιώντας την ίδια προσέγγιση βασισμένη σε ροή.

Q: Πώς να προσθέσω σχολιαστική σημείωση αντί για υπογράμμιση;
A: Δημιουργήστε ένα CommentAnnotation, ορίστε την ιδιότητα Text και προσθέστε το στη συλλογή Annotations όπως στο παράδειγμα υπογράμμισης.

Q: Είναι δυνατόν να γράψετε το σχολιασμένο αρχείο πίσω στον διακομιστή FTP;
A: Απόλυτα. Μετά την τοπική αποθήκευση, ανοίξτε ένα νέο FtpWebRequest με Method = WebRequestMethods.Ftp.UploadFile και γράψτε τη ροή αρχείου πίσω στη απομακρυσμένη διαδρομή.

Q: Ποιες εκδόσεις .NET υποστηρίζονται επίσημα;
A: Το GroupDocs.Annotation για .NET λειτουργεί με .NET Framework 4.6.1+, .NET Core 2.0+, .NET 5 και .NET 6.

Q: Πώς μπορώ να διαχειριστώ PDF με κωδικό πρόσβασης;
A: Μεταβιβάστε τον κωδικό στο κατασκευαστή AnnotationConfig μέσω της ιδιότητας Password πριν φορτώσετε τη ροή.

Συμπέρασμα

Τώρα έχετε ένα πλήρες, έτοιμο για παραγωγή πρότυπο για add annotations to pdf αρχεία που βρίσκονται σε διακομιστή FTP. Με τη ροή του αρχείου απευθείας στο GroupDocs.Annotation αποφεύγετε περιττές ενέργειες I/O στο δίσκο, διατηρείτε την εφαρμογή σας ελαφριά και έχετε πλήρη έλεγχο της ασφάλειας και της απόδοσης. Επεκτείνετε αυτή τη βάση με πιστοποίηση, αναφορά προόδου ή μαζική επεξεργασία για να καλύψετε τις απαιτήσεις των επιχειρησιακών ροών εγγράφων.

Για περαιτέρω βοήθεια, επισκεφθείτε το φόρουμ υποστήριξης.


Τελευταία ενημέρωση: 2026-07-06
Δοκιμάστηκε με: GroupDocs.Annotation 23.12 for .NET
Συγγραφέας: GroupDocs

using GroupDocs.Annotation.Models;
using GroupDocs.Annotation.Models.AnnotationModels;
using System;
using System.IO;
using System.Net;
string outputPath = Path.Combine("Your Document Directory", "result" + Path.GetExtension("input.pdf"));
string filePath = "sample.pdf";
using (Annotator annotator = new Annotator(GetFileFromFtp(filePath)))
{
    // Annotation code will be added here
}
AreaAnnotation area = new AreaAnnotation()
{
    Box = new Rectangle(100, 100, 100, 100),
    BackgroundColor = 65535,
};
annotator.Add(area);
annotator.Save(outputPath);
Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}.");
private static Stream GetFileFromFtp(string filePath)
{
    Uri uri = new Uri(filePath);
    FtpWebRequest request = CreateRequest(uri);
    using (WebResponse response = request.GetResponse())
        return GetFileStream(response);
}
private static FtpWebRequest CreateRequest(Uri uri)
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
    request.Method = WebRequestMethods.Ftp.DownloadFile;
    return request;
}
private static Stream GetFileStream(WebResponse response)
{
    MemoryStream fileStream = new MemoryStream();
    using (Stream responseStream = response.GetResponseStream())
        responseStream.CopyTo(fileStream);
    fileStream.Position = 0;
    return fileStream;
}
request.Timeout = 30000; // 30 seconds
request.Credentials = new NetworkCredential("username", "password");

Σχετικά Μαθήματα