Διαδικασία Απόδοσης

Από το έγγραφο σε εικόνες σελίδας

Μεταξύ του OpenDocumentAsync και του PNG που φθάνει στον περιηγητή υπάρχουν δύο ξεχωριστά στάδια: viewer resolution (ποιος κινητήρας φορτώνει το έγγραφο, αποφασίζεται μία φορά ανά άνοιγμα) και page processing (τι συμβαίνει σε κάθε εικόνα σελίδας σε κάθε αίτηση). Η γνώση και των δύο εξηγεί γιατί ένα μορφότυπο αποδίδει όπως αποδίδει — και τι αλλάζει πραγματικά το DefaultRender.

Στάδιο 1 — Επίλυση του προβολέα μορφότυπου

Το εργοστάσιο αντιστοιχίζει την επέκταση αρχείου σε έναν προβολέα μέσω του καταλόγου μορφότυπων, με τρία επίπεδα προτεραιότητας:

  1. Προσαρμοσμένοι προβολείς πρώτα. Οτιδήποτε καταχωρίσατε με DoconutOptions.RegisterViewer(extension, factory, defaultConfig?) υπερισχύει όλων των ενσωματωμένων.
  2. Built-in family viewers. Ο κατάλογος αντιστοιχίζει κάθε επεκτάσιμη επέκταση σε μια οικογένεια προβολέα — Word, Excel, PowerPoint, Pdf, Cad, Dgn, Image, Tiff, Psd, Email, Visio, Project, Xps, Epub, Txt, Html, Mht, Dcn — καθένα με τον δικό του προσαρμογέα κινητήρα. Εάν ένα αδειοδοτημένο πρόσθετο προσφέρει έναν προβολέα για την ίδια επέκταση, ο προβολέας του πρόσθετου αντικαθιστά τον ενσωματωμένο. Η AddDoconut() επικυρώνει τα δικαιώματα των καταχωρημένων πρόσθετων κατά την εκκίνηση· η εναλλακτική του εργοστασίου προς τον ενσωματωμένο προβολέα είναι ένας αμυντικός κανόνας χρόνου εκτέλεσης.
  3. Plugin-only formats. Ορισμένες επεκτάσεις δεν έχουν καθόλου ενσωματωμένο προβολέα — το DICOM (.dcm) υπάρχει μόνο μέσω του πρόσθετου DICOM. Το άνοιγμα ενός χωρίς την απαιτούμενη δυνατότητα προκαλεί:
text
LicenseException: This document type requires the 'Dicom' plugin license.

Μια επέκταση χωρίς προβολέα προκαλεί:

text
FormatNotSupportedException: Document format '<extension>' is not supported.

Μετά την επίλυση, η διαμόρφωση καθορίζεται: το ρητό αντικείμενο διαμόρφωσης εάν το περάσατε, διαφορετικά η προεπιλεγμένη διαμόρφωση του μορφότυπου από τον κατάλογο. Η DocOptions.Password αντιγράφεται στη διαμόρφωση για προστατευμένα έγγραφα.

Στάδιο 1β — Λειτουργία ανακατεύθυνσης (DefaultRender = false)

Οι περισσότερες διαμορφώσεις ανά μορφότυπο εκθέτουν μια σημαία DefaultRender. Επιλέγει μεταξύ δύο θεμελιωδώς διαφορετικών διαδρομών:

  • DefaultRender = true — το έγγραφο αποδίδεται εγγενώς, απευθείας σε εικόνες σελίδας.
  • DefaultRender = false — το έγγραφο πρώτα μετατρέπεται σε PDF στη μνήμη, ο κινητήρας προέλευσης απελευθερώνεται, και ένας προβολέας PDF παίρνει τον έλεγχο. Το παραγόμενο PDF ενσωματώνει πραγματικό κείμενο, έτσι η αναζήτηση πλήρους κειμένου λαμβάνει εικονοστοιχικές ακριβείς εγγενείς επισημάνσεις· η διαδικασία επιβάλλει AllowSearch και AllowCopy για το ανακατευθυνόμενο PDF επειδή η μετατροπή είναι αόρατη στον χρήστη.

Το XPS και η προεπιλογή του καταλόγου για MHT χρησιμοποιούν τη διαδρομή ανακατεύθυνσης. Μια προβολή PDF μπορεί να παρέχει εγγενή αναζήτηση για μορφότυπους όπως HTML και Microsoft Project. Εάν το παραγόμενο PDF περιέχει εικόνες χωρίς στρώση κειμένου, ο τυπικός προβολέας δεν μπορεί να αναζητήσει αυτά τα pixel.

Χρησιμοποιήστε τη λειτουργία ανακατεύθυνσης όταν χρειάζεστε μια προβολή PDF με κείμενο — με κόστος προημερολογικής μετατροπής όταν ανοίγει το έγγραφο.

Στάδιο 2 — Η διαδικασία εικόνας σελίδας

Οι αποδοθείσες σελίδες επεξεργάζονται ανά αίτηση μέσω μιας σταθερής ακολουθίας:

text
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response
  • Watermark — εφαρμόζεται από την κατάσταση της άδειας (έλλειψη άδειας, ληγμένη προσωρινή ή συνδρομή, μη έγκυρος τομέας, λάθος έκδοση) και από DocOptions.Watermark για το δικό σας προσαρμοσμένο κείμενο. Μια σωστά αδειοδοτημένη εφαρμογή — ή ενεργή προσωρινή άδεια — χωρίς προσαρμοσμένο υδατογράφημα παραλείπει αυτό το βήμα.
  • Rotate/flip — η κατάσταση ανά σελίδα που ο χρήστης ορίζει στο widget (90°/180°/270°, οριζόντιες/κατακόρυφες αναστροφές) αποθηκεύεται στη συνεδρία και εφαρμόζεται σε κάθε επόμενη απόδοση εκείνης της σελίδας.
  • Scale — οι μικρογραφίες και τα επίπεδα ζουμ παράγονται κλιμακώνοντας την αποδοθείσα σελίδα στο ζητούμενο μέγεθος στόχο· 0 σημαίνει εξυπηρέτηση στο αρχικό μέγεθος.
  • Annotation burn — οι αποθηκευμένες σημειώσεις σχεδιάζονται πάνω στο bitmap ώστε οι εξαγωγές και οι εικόνες σελίδας τις εμφανίζουν.
  • Encoding — το αποτέλεσμα κωδικοποιείται σε PNG χρησιμοποιώντας κοινόχρηστους ροές μνήμης και γράφεται απευθείας στην HTTP απόκριση.

Τα σφάλματα μέσα στο middleware επιστρέφονται ως PNG εικόνες σφάλματος (κόκκινο κείμενο σε λευκό) αντί για σελίδες σφάλματος HTTP, ώστε το widget να μπορεί να τις εμφανίσει στην περιοχή της σελίδας.

Κρυφή μνήμη σελίδων

BaseConfig.CachePages (προεπιλογή true) διατηρεί τις αποδοθείσες εικόνες σελίδων στη μνήμη για τη διάρκεια της συνεδρίας εγγράφου, ώστε η επανεπίσκεψη μιας σελίδας να μην την αποδίδει ξανά. BaseConfig.ImageResolution (25–300 DPI, 0 = προεπιλογή μορφότυπου) είναι ο κύριος δείκτης ποιότητας/μνήμης· η προεπιλογή κάθε μορφότυπου τεκμηριώνεται στη σελίδα διαμόρφωσής του.

DocOptions.ImageResolution είναι obsolete και δεν ελέγχει την ποιότητα απόδοσης. Εάν προωθείτε μια εφαρμογή από την προηγούμενη βιβλιοθήκη, μεταφέρετε αυτήν την τιμή στη διαμόρφωση του μορφότυπου — ο μεταγλωττιστής θα επισημάνει κάθε σημείο κλήσης.

Απόδοση σε έναν κόμβο vs. πολλούς

Όλα τα παραπάνω περιγράφουν την απόδοση σε έναν μόνο κόμβο κατ' απαίτηση για τη συνεδρία που άνοιξε το έγγραφο. Μια ανάπτυξη όπου ένας κόμβος αποδίδει και δημοσιεύει ολόκληρο το σύνολο των τεχνουργημάτων, και άλλοι κόμβοι εξυπηρετούν αυτές τις σελίδες από κοινόχρηστη αποθήκευση, χρησιμοποιεί διαφορετική διαδρομή ανάγνωσης — δείτε Κατανεμημένες Αναπτύξεις.

Πού να ρυθμίσετε τι

Τι θέλετεΡύθμιση
Πιο καθαρές σελίδεςImageResolution on the format config
Ακριβής αναζήτηση κειμένου σε HTML/EPUB/email/MHT/MPPDefaultRender = false on the format config
Μικρότερη μνήμη σε τεράστια έγγραφαCachePages = false, close sessions explicitly
Η δική σας σφραγίδα σε κάθε σελίδαDocOptions.Watermark

Ήταν αυτή η σελίδα χρήσιμη;