Διαμόρφωση Προβολέα

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

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

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

Ιδιότητες 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Ενεργοποιήστε το polling όταν η ασύγχρονη/διανεμημένη παραγωγή σελίδων ανταποκρίνεται 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 / 200JavaScript maxZoom διαφέρει από το C# (300).
showToolTip / toolTipPageTexttrue / "Page "Υπόδειξη θέσης σελίδας.
format / doc / AccessToken"" / 0 / ""Εσωτερικές τιμές αρχικοποίησης· συνήθως γεμίζονται από View(token).
debugModefalseΠρόσθετη διάγνωση πελάτη.
FitType""Καμία αυτόματη προσαρμογή εκτός αν δοθεί.
BasePath"DocImage.axd"Ιστορική προεπιλογή πελάτη διατηρείται για συμβατότητα. Οι τρέχοντες κεντρικοί υπολογιστές ASP.NET Core πρέπει να το ορίσουν ρητά στο αντιστοιχισμένο κλαδί μεσαίου λογισμικού.
ResPath""Ορίστε ρητά στη διαδρομή ενσωματωμένων εικόνων.
cacheEnabled / cacheCount / cacheDelayfalse / 3 / 3Παράθυρο προφόρτωσης σελίδας στη μνήμη και καθυστέρηση.
autoLoadfalseΣυνιστάται ρητή ροή διακριτικού.
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. Ο προηγούμενος προβολέας έψαχνε
παγκόσμιες συναρτήσεις των οποίων τα ονόματα προερχόταν από το αναγνωριστικό του 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 μπορεί να εμφανίσει οτιδήποτε.

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