
Μετατροπή Εγγράφων στο Σέρβερ σε .NET με Doconut
Εισαγωγή
Η μετατροπή εγγράφων στο σέρβερ επιτρέπει σε μια εφαρμογή να δημιουργεί ένα τυποποιημένο αποτέλεσμα χωρίς να αυτοματοποιεί το Microsoft Office ή να στέλνει την πηγή σε ξεχωριστή διαδικτυακή υπηρεσία μετατροπής. Αυτό μπορεί να απλοποιήσει τις πύλες εγγράφων, τις εργασίες παρασκηνίου και τις ελεγχόμενες ροές εξαγωγής — αλλά η εφαρμογή-φιλοξενία διατηρεί τον έλεγχο πρόσβασης, την αποθήκευση, τη διατήρηση, την παρακολούθηση και την παράδοση του αποτελέσματος.

Το Plugin Μετατροπέα .NET 8 της Doconut εκθέτει τη μετατροπή μέσω της υπηρεσίας DocumentConverter που εισάγεται με εξάρτηση. Αυτός ο οδηγός εστιάζει στην τρέχουσα καταχώρηση και το μοντέλο API και αποφεύγει τη σύνδεση της μετατροπής με μια συνεδρία προβολής.
Εγκατάσταση Συμβατών Πακέτων
Εγκαταστήστε τα βασικά πακέτα προβολής και μετατροπέα:
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Converter
Διατηρήστε και τα δύο πακέτα στην ίδια έκδοση κυκλοφορίας. Όταν η επαναληψιμότητα των builds είναι σημαντική, κλειδώστε την έκδοση στο αρχείο έργου ή περάστε την ίδια τιμή --version και στις δύο εντολές.
Καταχώρηση του Plugin Μετατροπέα
Τα plugins καταχωρούνται μέσα στην κλήση επιστροφής επιλογών AddDoconut. Δεν υπάρχει ξεχωριστή μέθοδος καταχώρησης AddConverter():
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>();
});
Η εφαρμογή πρέπει να χρησιμοποιεί άδεια που παρέχει τη δυνατότητα του Μετατροπέα. Επίλυση σφαλμάτων εκκίνησης και αδειοδότησης πριν την αποδοχή εργασιών μετατροπής· μην τα αναβάλλετε σε ουρά παρασκηνίου όπου γίνονται πιο δύσκολα στην διάγνωση.
Μετατροπή Αρχείου από C#
Ενσωματώστε το DocumentConverter στο endpoint ή στην υπηρεσία που διαχειρίζεται το αίτημα μετατροπής. Ο κατασκευαστής του μετατροπέα είναι εσωτερικός, επομένως ο κώδικας της εφαρμογής δεν πρέπει να τον δημιουργεί άμεσα.
app.MapPost("/api/convert", async (
DocumentConverter converter,
CancellationToken ct) =>
{
await using Stream pdf = await converter.ConvertAsync(
"documents/contract.docx",
ConversionTarget.Pdf,
ct: ct);
using var copy = new MemoryStream();
await pdf.CopyToAsync(copy, ct);
return Results.File(copy.ToArray(), "application/pdf", "contract.pdf");
});
Η επιστρεφόμενη ροή είναι αναζητήσιμη και βρίσκεται στην αρχή. Ο καλών την κατέχει και πρέπει να την απελευθερώσει μετά την αντιγραφή ή την επιστροφή του περιεχομένου.
Μετατροπή Μεταφορτωμένης Ροής
Η υπερφόρτωση ροής απαιτεί την επέκταση του πηγαίου αρχείου —συμπεριλαμβανομένου του αρχικού σημείου— επειδή ο μετατροπέας τη χρησιμοποιεί για την αναγνώριση της πηγής μορφής:
app.MapPost("/api/convert-upload", async (
IFormFile file,
DocumentConverter converter,
CancellationToken ct) =>
{
var extension = Path.GetExtension(file.FileName);
await using var source = file.OpenReadStream();
await using Stream output = await converter.ConvertAsync(
source,
extension,
ConversionTarget.Pdf,
password: null,
ct: ct);
using var copy = new MemoryStream();
await output.CopyToAsync(copy, ct);
return Results.File(copy.ToArray(), "application/pdf", "converted.pdf");
});
Αντιμετωπίστε το όνομα αρχείου και την επέκταση ως μη αξιόπιστη είσοδο. Επιβάλετε όρια μεταφόρτωσης, επικυρώστε τον τύπο πηγής, εξουσιοδοτήστε τον χρήστη που ζητά, και αποφύγετε τη χρήση του υποβληθέντος ονόματος αρχείου ως διαδρομή αποθήκευσης.
Επιλογή Στόχων από Πραγματικές Δυνατότητες
Το plugin εκθέτει ένα enum ConversionTarget, αλλά δεν μπορεί κάθε μορφή πηγής να παραγάγει κάθε στόχο. Μια προσαρμοσμένη διεπαφή θα πρέπει να εμφανίζει μόνο τους στόχους που επιτρέπονται για την ανεβασμένη πηγή αντί να εμφανίζει όλες τις τιμές του enum.
Κατά τη χρήση του προαιρετικού widget μετατροπέα της Doconut, η ανοιχτή του απόκριση περιλαμβάνει allowedTargets. Χρησιμοποιήστε αυτήν την απόκριση ως πηγή αλήθειας για το τρέχον αρχείο.
Σχεδίαση Μετατροπής Παρασκηνίου ως Ροή Εργασίας Εφαρμογής
Ο μετατροπέας μπορεί να κληθεί από μια υπηρεσία εφαρμογής ή από εργάτη ουράς. Μια αξιόπιστη εργασία συνήθως περιλαμβάνει:
- Αυθεντικό αίτημα που καταγράφει την πηγή και τον επιθυμητό στόχο.
- Μήνυμα ουράς που περιέχει το αναγνωριστικό εργασίας της εφαρμογής, όχι ακατέργαστα διαπιστευτήρια.
- Εργάτης που ανακτά την πηγή μέσω εξουσιοδοτημένης αφαίρεσης αποθήκευσης.
- Περιορισμένη λειτουργία μετατροπής με δυνατότητα ακύρωσης.
- Ανθεκτική αποθήκευση εξόδου με σαφείς κανόνες διατήρησης.
- Ενημέρωση κατάστασης που δεν αποκαλύπτει εσωτερικές διαδρομές ή ευαίσθητες λεπτομέρειες εξαιρέσεων.
Μετρήστε τη σύγκρουση με αντιπροσωπευτικά έγγραφα πριν επιλέξετε τον αριθμό των εργατών. Το κόστος μετατροπής διαφέρει ανάλογα με τη μορφή πηγής, την πολυπλοκότητα του εγγράφου, τις γραμματοσειρές, τις εικόνες και τον στόχο εξόδου.
Διατήρηση Ακριβών Απαιτήσεων Ασφαλείας
Η εκτέλεση του μετατροπέα μέσα στην .NET εφαρμογή σας σημαίνει ότι η λειτουργία μετατροπής δεν απαιτεί αυτοματοποίηση του Microsoft Office ή ξεχωριστό διαδικτυακό API μετατροπής. Δεν εγγυάται αυτόματα την ιδιωτικότητα, τη συμμόρφωση, τη διαγραφή ή την κρυπτογράφηση για ολόκληρο το σύστημα.
Αυτά τα χαρακτηριστικά εξαρτώνται από το πώς η εφαρμογή πιστοποιεί τους χρήστες, ανακτά τα πηγαία αρχεία, διαμορφώνει την αποθήκευση, προστατεύει τα αρχεία καταγραφής, διανέμει την έξοδο και αφαιρεί τα προσωρινά ή διατηρημένα δεδομένα.
Λίστα Ελέγχου Λειτουργίας
- Διατηρήστε τις εκδόσεις
Doconut.NET8καιDoconut.NET8.Converterευθυγραμμισμένες. - Καταχωρήστε το
ConverterPluginκατά τη ρύθμιση των υπηρεσιών. - Αντιμετωπίστε το
DocumentConverterμέσω ενσωμάτωσης εξαρτήσεων. - Συμπεριλάβετε το αρχικό σημείο στις επεκτάσεις πηγής ροής.
- Απελευθερώστε τις ροές πηγής και αποτελέσματος.
- Χρησιμοποιήστε ακύρωση και όρια μεγέθους αρχείου επιπέδου εφαρμογής.
- Επικυρώστε την υποστήριξη πηγή-προς-στόχο αντί να υποθέτετε ότι κάθε ζεύγος λειτουργεί.
- Δοκιμάστε την πιστότητα και τη χρήση πόρων με αντιπροσωπευτικά αρχεία.
- Διατηρήστε τις αποφάσεις αποθήκευσης, εξουσιοδότησης, ελέγχου και διατήρησης στον κώδικα της εφαρμογής.
Δείτε την επίσημη επισκόπηση του Doconut Converter Plugin και την Doconut documentation για τις τρέχουσες πληροφορίες προϊόντος και ενσωμάτωσης.