ViewerConfig

Επιλογές widget προβολέα πελάτη

ViewerConfig (namespace Doconut) περιγράφει την εμφάνιση και τη συμπεριφορά του προβολέα του προγράμματος περιήγησης. Δεν επηρεάζει την ποιότητα απόδοσης του εγγράφου· χρησιμοποιήστε μια διαμόρφωση μορφής γι' αυτό. Η κλάση C# και το μακροχρόνιο widget JavaScript έχουν διαφορετικές προεπιλογές, επομένως αντιστοιχίστε τις τιμές ρητά.

Δύο αλλαγές στην πλευρά του πελάτη σε αυτή την έκδοση αποτυγχάνουν σιωπηρά. Οι συναρτήσεις χειριστή περνιούνται ως επιλογές — το widget δεν εξάγει πλέον ονόματα παγκόσμιων συναρτήσεων από το id του container — και το ResPath πρέπει να δείχνει στο πρόθεμα των πόρων αντί στη ρίζα της εφαρμογής. Και τα δύο αφήνουν τον διακομιστή να λειτουργεί τέλεια και δεν αναφέρουν τίποτα στην κονσόλα του προγράμματος περιήγησης. Αν προωθείτε μια σελίδα από την προηγούμενη βιβλιοθήκη, διαβάστε Κλήσεις επιστροφής και Λίστα ελέγχου διαδρομής πριν οτιδήποτε άλλο.

Ιδιότητες C#

ΤύποςΙδιότηταΠροεπιλογήΠεριγραφή
boolShowThumbstrueΕμφανίζει το πάνελ μικρογραφιών.
boolAutoLoadfalseΦορτώνει αυτόματα μετά την αρχικοποίηση. Η κανονική ροή token καλεί το View(token) ρητά.
boolAutoFocustrueΜετακινεί την εστίαση/κύλιση του προγράμματος περιήγησης στον προβολέα κατά την αρχικοποίηση.
boolAutoPageFocustrueΔιατηρεί τη τρέχουσα μικρογραφία ορατή ενώ αλλάζουν οι σελίδες.
intPageZoom100Αρχικό ποσοστό ζουμ.
intZoomStep10Ποσοστό που προστίθεται ή αφαιρείται με τις εντολές ζουμ.
intMaxZoom300Μέγιστο ποσοστό ζουμ.
boolShowToolTiptrueΕμφανίζει το tooltip θέσης σελίδας κατά την κύλιση.
stringToolTipPageText"Page "Πρόθεμα που χρησιμοποιείται στο tooltip της σελίδας.
boolCacheEnabledfalseΔιατηρεί ένα κινούμενο παράθυρο εικόνων σελίδων στη μνήμη του προγράμματος περιήγησης. Δεν χρησιμοποιεί localStorage.
boolLargeDocfalseΠροσθέτει στοιχεία σελίδας σε χρονομετρημένες παρτίδες για μεγάλα έγγραφα.
boolShowHyperlinksfalseΑποδίδει επικάλυψη υπερσυνδέσμων όταν η διαμόρφωση του διακομιστή τα εξάγει.
boolFixedZoomtrueΧρησιμοποιεί σταθερό ποσοστό ζουμ αντί για επαναϋπολογισμό ανάλογα με την απόκριση.
intFixedZoomPercent100Σταθερό ζουμ επιφάνειας εργασίας.
intFixedZoomPercentMobile75Σταθερό ζουμ για κινητές συσκευές.
stringBasePath"/"Πού ο προβολέας στέλνει αιτήματα σελίδων. "/" είναι το DocImage.axd στη ρίζα του ιστότοπου· διαφορετικά είναι το κλαδί όπου ο κεντρικός υπολογιστής αντιστοιχεί το UseDoconut(), χωρίς αρχικό / ("doconut" σημαίνει /doconut/DocImage.axd).
stringResPath"doconut-res/images" (26.9.0; "doconut-res" before)Φάκελος από τον οποίο το widget φορτώνει τις δικές του εικόνες: ο φάκελος images κάτω από το ResourcesPath, χωρίς αρχικό /.
stringFitType"width""width", "height", ή κενό για καμία αυτόματη προσαρμογή. Το "page" δεν γίνεται αποδεκτό από το τρέχον widget.
boolRetryOn409falseΕνεργοποιεί την ανάληψη ερωτημάτων όταν η ασύγχρονη/διανεμημένη παραγωγή σελίδων απαντά 202 Accepted; το 409 επίσης γίνεται αποδεκτό για συμβατότητα με παλαιότερους διακομιστές. Δεν απαιτείται από τον κανονικό συγχρονισμένο προβολέα.
csharp
var config = new ViewerConfig
{
    ShowThumbs = true,
    AutoLoad = false,
    PageZoom = 100,
    MaxZoom = 300,
    FitType = "width",
    BasePath = "doconut",           // χωρίς αρχικό '/': ο προβολέας το προσθέτει ("/doconut" θα γίνει //doconut, άλλο host)
    ResPath = "doconut-res/images",
    ShowHyperlinks = true
};

Αντιστοίχιση C# σε JavaScript

Μην περάσετε ένα άμεσα σειριοποιημένο ViewerConfig στο docViewer(...). Οι περισσότερες κλειδιά του widget είναι camelCase, ενώ τρία καθιερωμένα κλειδιά διαδρομής/προσαρμογής είναι PascalCase.

C#JavaScript
ShowThumbsshowThumbs
AutoLoadautoLoad
AutoFocusautoFocus
AutoPageFocusautoPageFocus
PageZoompageZoom
ZoomStepzoomStep
MaxZoommaxZoom
ShowToolTipshowToolTip
ToolTipPageTexttoolTipPageText
CacheEnabledcacheEnabled
LargeDoclargeDoc
ShowHyperlinksshowHyperlinks
FixedZoomfixedZoom
FixedZoomPercentfixedZoomPercent
FixedZoomPercentMobilefixedZoomPercentMobile
BasePathBasePath
ResPathResPath
FitTypeFitType
RetryOn409retryOn409

Προεπιλογές JavaScript

Το widget έχει παλαιότερες προεπιλογές που διαφέρουν από την κλάση C#. Οι παρακάτω τιμές προέρχονται από την τρέχουσα υλοποίηση του docViewer.js.

ΕπιλογήΠροεπιλογήΣημειώσεις
leftMinWidth / leftMaxWidth220 / 800Όρια πλάτους του παραθύρου μικρογραφιών.
showThumbstrueΑρχική ορατότητα μικρογραφιών.
autoFocus / autoPageFocustrue / falseautoPageFocus διαφέρει από την προεπιλογή C#.
thumbWidth / thumbHeight / thumbPadding150 / 200 / 10Γεωμετρία μικρογραφιών σε εικονοστοιχεία.
pageZoom / zoomStep / maxZoom100 / 10 / 200Το JavaScript maxZoom διαφέρει από το C# (300).
showToolTip / toolTipPageTexttrue / "Page "Συμβουλή εργαλείου θέσης σελίδας.
format / doc / AccessToken"" / 0 / ""Εσωτερικές τιμές αρχικοποίησης· συνήθως γεμίζονται από το View(token).
debugModefalseΕπιπλέον διαγνωστικά πελάτη.
FitType""Καμία αυτόματη προσαρμογή εκτός εάν δοθεί.
BasePath"DocImage.axd"Ιστορική προεπιλογή πελάτη διατηρημένη για συμβατότητα. Οι τρέχοντες κεντρικοί υπολογιστές ASP.NET Core πρέπει να το ορίσουν ρητά στο αντιστοιχισμένο κλαδί middleware.
ResPath""Ορίζεται ρητά στη διαδρομή ενσωματωμένων εικόνων.
cacheEnabled / cacheCount / cacheDelayfalse / 3 / 3Παράθυρο και καθυστέρηση προφόρτωσης σελίδων στη μνήμη.
autoLoadfalseΣυνιστάται ρητή ροή token.
largeDoctrueΔιαφέρει από την προεπιλογή C#.
fixedZoomfalseΔιαφέρει από την προεπιλογή C#.
fixedZoomPercent / fixedZoomPercentMobile100 / 50Η κινητή τιμή διαφέρει από το C# (75).
showHyperlinkstrueΑπαιτεί εξαγωγή από τον διακομιστή για τη δημιουργία επικάλυψης.

Ορίστε όλες τις σημαντικές τιμές συμπεριφοράς αντί να βασίζεστε σε κάποιο σύνολο προεπιλογών:

html
<div id="divDocViewer"><div id="div_ctlDoc"></div></div>

<script>
const objViewer = $('#div_ctlDoc').docViewer({
    showThumbs: true,
    autoLoad: false,
    autoFocus: true,
    autoPageFocus: true,
    pageZoom: 100,
    zoomStep: 10,
    maxZoom: 300,
    FitType: 'width',
    cacheEnabled: false,
    largeDoc: false,
    showHyperlinks: true,
    fixedZoom: true,
    fixedZoomPercent: 100,
    fixedZoomPercentMobile: 75,
    BasePath: 'doconut',
    ResPath: 'doconut-res/images',
    onViewerReady: function () {},
    onError: function (message) { console.error('DocViewer:', message); }
});
</script>

Ανακλήσεις

ΑνακλήσηΟρίσματαΣκοπός
onPageLoadingpageNumΈνα αίτημα σελίδας ξεκινά.
onPageLoadedpageNumΗ εικόνα μιας σελίδας ολοκληρώθηκε η φόρτωση.
onThumbnailClickedpageNumΟ χρήστης επέλεξε μια μικρογραφία.
onPageClickedpageNumΟ χρήστης επέλεξε μια σελίδα.
onDoubleClicknoneΟ προβολέας έλαβε διπλό κλικ.
onViewerBusynoneΟ προβολέας εισήλθε σε κατάσταση απασχόλησης.
onViewerReadynoneΗ αρχικοποίηση ολοκληρώθηκε.
onViewerErrornoneΟ προβολέας εισήλθε στην κατάσταση σφάλματος.
onErrormessageΜια λειτουργία επέστρεψε μήνυμα σφάλματος.
onCopydataΔιατίθενται δεδομένα αντιγραφής κειμένου.
onAutoLoadStatuspageNumΗ αυτόματη φόρτωση προχώρησε σε μια σελίδα.
onThumbsShownnoneΟ πίνακας μικρογραφιών έγινε ορατός.
onAnnLoadednoneΤα δεδομένα σχολίων φορτώθηκαν.
onAnnSavednoneΤα δεδομένα σχολίων αποθηκεύτηκαν.
onAnnSaveErrornoneΑπέτυχε η αποθήκευση σχολίων.
onAnnClosednoneΤο UI σχολίων έκλεισε.

Κρατήστε τις ανακλήσεις γρήγορες· στείλτε τηλεμετρία ασύγχρονα και μην μπλοκάρετε την απόδοση της σελίδας.

Κάθε μία από αυτές είναι μια επιλογή στο αντικείμενο init. Ο προηγούμενος προβολέας έψαχνε παγκόσμιες συναρτήσεις των οποίων τα ονόματα προερχόταν από το id του container — μια σελίδα με <div id="div_ctlDoc"> έπρεπε μόνο να δηλώσει function ctlDoc_OnViewerReady(). Αυτή η αναζήτηση έχει αφαιρεθεί. Περνάτε τη συνάρτηση ρητά:

javascript
objctlDoc = $('#div_ctlDoc').docViewer({
    // ... οι υπάρχουσες επιλογές σας ...
    onViewerBusy:     ctlDoc_OnViewerBusy,      // βρέθηκε με το όνομα
    onViewerReady:    ctlDoc_OnViewerReady,     // βρέθηκε με το όνομα
    onCopy:           ctlDoc_Copy,              // ήταν ctlDoc_Copy(text)
    onAutoLoadStatus: ctlDoc_AutoLoadStatus     // ήταν ctlDoc_AutoLoadStatus(page)
});

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

Δεν υπάρχει ανακλήση κλικ σε σύνδεσμο — η διαχείριση υπερσυνδέσμων είναι ενσωματωμένη και ελέγχεται από το showHyperlinks.

Δημόσιες ομάδες μεθόδων

ΟμάδαΚοινές μέθοδοι
Κύκλος ζωήςView(token, accessToken?), Close(server?), Token(), Init(), IsLoaded()
ΠλοήγησηGotoPage(page), ShowPage(page, focus?), Next(next), CurrentPage(), TotalPages()
Μεγέθυνση και προσαρμογήZoom(zoomIn), CurrentZoom(), FitType(value), Refit()
ΠροσανατολισμόςRotate(page, angle), Flip(page, flipType)
ΜικρογραφίεςHideThumbs(hide), ThumbSize(size), ReloadThumbs(width), ScrollToThumb(thumb)
ΑναζήτησηCanSearch(), Search(...), SearchMatchCount(), SearchSummary(...), GotoSearchMatch(...)
ΣχόλιοSaveAnnotations(), GetAnnotations(), PushAnnotations(...), CloseAnnotations(...), ShowAnnotations(...)
ΑντιγραφήCopy(...), CopyPage(pageNumber), CopyMode(enabled)

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

Επανάληψη ενώ μια κατανεμημένη σελίδα εξακολουθεί να αποδίδεται

retryOn409 διατηρεί το ιστορικό του όνομα. Χρησιμοποιείται για ασύγχρονη παραγωγή σελίδων και επαναλαμβάνει την τρέχουσα απόκριση ετοιμότητας 202 Accepted καθώς και το παλαιότερο σήμα 409 Conflict. Όταν είναι ενεργοποιημένο, το widget ελέγχει με αυτές τις προεπιλογές JavaScript:

ΕπιλογήΠροεπιλογή
retryInitialDelayMs250
retryBackoffFactor1.6
retryMaxDelayMs2500
retryMaxAttempts60
retryMaxTotalMs120000

Αφήστε το απενεργοποιημένο για τον κανονικό προβολέα μονού κόμβου. Η ενεργοποίησή του δεν μπορεί να κάνει μια μη υποστηριζόμενη συγχρονική απόδοση ασύγχρονη.

Ενεργοποιήστε το όταν οι σελίδες εξυπηρετούνται από κοινόχρηστη αποθήκευση με FirstPagePriority, όπου οι μεταγενέστερες σελίδες απαντούν νόμιμα 202 Accepted μέχρι να γραφτούν. Ένας πελάτης που δεν επαναλαμβάνει εμφανίζει σπασμένα πλακίδια για σελίδες που εξακολουθούν να αποδίδονται — δείτε Κατανεμημένες Αναπτύξεις.

Λίστα ελέγχου διαδρομής

  • DoconutOptions.MiddlewarePath πρέπει να περιγράφει το κλαδί που πραγματικά αντιστοιχίζετε.
  • BasePath πρέπει να στοχεύει σε αυτό το κλαδί, γραμμένο χωρίς αρχικό / ('doconut', όχι '/doconut': ο προβολέας προσθέτει την κάθετο, και //doconut/... είναι αίτηση σε άλλο κεντρικό υπολογιστή). Η αναφορά εφαρμογής διατηρεί το ιστορικό σχήμα αίτησης DocImage.axd σε κλαδί MapWhen και επομένως ορίζει BasePath: '/'.
  • DoconutOptions.ResourcesPath είναι η διαδρομή ενσωματωμένων πόρων.
  • ResPath συνήθως στοχεύει στον υποφάκελο images του, χωρίς αρχικό / — 'doconut-res/images' με το προεπιλεγμένο πρόθεμα. Ένα κενό ResPath ήταν σωστό στην προηγούμενη βιβλιοθήκη, όπου οι πόροι προέρχονταν από τη ρίζα της εφαρμογής· δεν είναι σωστό εδώ και αποτυγχάνει χωρίς σφάλμα.
  • ExtractHyperlinks πρέπει να είναι ενεργοποιημένο στη διαμόρφωση μορφής του διακομιστή πριν το showHyperlinks μπορεί να εμφανίσει κάτι.

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