ViewerConfig

Opzioni del widget visualizzatore client

ViewerConfig (namespace Doconut) descrive l'aspetto e il comportamento del visualizzatore del browser. Non influisce sulla qualità del rendering del documento; per questo usa una configurazione di formato. La classe C# e il widget JavaScript di lunga data hanno impostazioni predefinite diverse, quindi mappa i valori esplicitamente.

Due modifiche lato client in questa release falliscono silenziosamente. Le funzioni handler vengono passate come opzioni — il widget non deriva più i nomi delle funzioni globali dall'id del contenitore — e ResPath deve puntare al prefisso delle risorse anziché alla radice dell'applicazione. Entrambe lasciano il server funzionante perfettamente e non segnalano nulla nella console del browser. Se stai portando una pagina dalla libreria precedente, leggi Callback e Checklist dei percorsi prima di qualsiasi altra cosa.

Proprietà C#

TipoProprietàPredefinitoDescrizione
boolShowThumbstrueMostra il pannello delle miniature.
boolAutoLoadfalseCarica automaticamente dopo l'inizializzazione. Il flusso normale del token chiama esplicitamente View(token).
boolAutoFocustrueSposta il focus/scroll del browser sul visualizzatore durante l'inizializzazione.
boolAutoPageFocustrueMantieni visibile la miniatura corrente mentre le pagine cambiano.
intPageZoom100Percentuale di zoom iniziale.
intZoomStep10Percentuale aggiunta o rimossa dai comandi di zoom.
intMaxZoom300Percentuale massima di zoom.
boolShowToolTiptrueMostra il tooltip della posizione della pagina durante lo scorrimento.
stringToolTipPageText"Page "Prefisso usato nel tooltip della pagina.
boolCacheEnabledfalseMantiene una finestra mobile di immagini delle pagine nella memoria del browser. Non utilizza localStorage.
boolLargeDocfalseAggiunge gli elementi delle pagine in batch temporizzati per documenti di grandi dimensioni.
boolShowHyperlinksfalseRenderizza sovrapposizioni di hyperlink quando la configurazione del server le estrae.
boolFixedZoomtrueUtilizza una percentuale di zoom fissa invece di un ricalcolo responsivo.
intFixedZoomPercent100Zoom fisso per desktop.
intFixedZoomPercentMobile75Zoom fisso per mobile.
stringBasePath"/"Dove il visualizzatore invia le richieste di pagina. "/" è DocImage.axd alla radice del sito; altrimenti il ramo dove l'host mappa UseDoconut(), senza una / iniziale ("doconut" significa /doconut/DocImage.axd).
stringResPath"doconut-res/images" (26.9.0; "doconut-res" precedentemente)Cartella da cui il widget carica le proprie immagini: la cartella images sotto ResourcesPath, senza una / iniziale.
stringFitType"width""width", "height" o vuoto per nessun adattamento automatico. "page" non è accettato dal widget attuale.
boolRetryOn409falseAbilita il polling quando la produzione di pagine asincrona/distribuita risponde 202 Accepted; 409 è anche accettato per compatibilità con server più vecchi. Non necessario per il visualizzatore sincrono normale.
csharp
var config = new ViewerConfig
{
    ShowThumbs = true,
    AutoLoad = false,
    PageZoom = 100,
    MaxZoom = 300,
    FitType = "width",
    BasePath = "doconut",           // nessuna '/' iniziale: il visualizzatore la aggiunge ("/doconut" diventerebbe //doconut, un altro host)
    ResPath = "doconut-res/images",
    ShowHyperlinks = true
};

Mappatura da C# a JavaScript

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

Predefiniti JavaScript

Il widget ha predefiniti più vecchi che differiscono dalla classe C#. I seguenti valori provengono dall'attuale implementazione docViewer.js.

OpzionePredefinitoNote
leftMinWidth / leftMaxWidth220 / 800Limiti della larghezza del pannello delle miniature.
showThumbstrueVisibilità iniziale delle miniature.
autoFocus / autoPageFocustrue / falseautoPageFocus differisce dal valore predefinito C#.
thumbWidth / thumbHeight / thumbPadding150 / 200 / 10Geometria delle miniature in pixel.
pageZoom / zoomStep / maxZoom100 / 10 / 200maxZoom JavaScript differisce da C# (300).
showToolTip / toolTipPageTexttrue / "Page "Tooltip di posizione della pagina.
format / doc / AccessToken"" / 0 / ""Valori di inizializzazione interni; normalmente popolati da View(token).
debugModefalseDiagnostica client aggiuntiva.
FitType""Nessun adattamento automatico a meno che non sia fornito.
BasePath"DocImage.axd"Predefinito client storico mantenuto per compatibilità. Gli host ASP.NET Core attuali devono impostarlo esplicitamente al ramo di middleware mappato.
ResPath""Impostare esplicitamente al percorso delle immagini incorporate.
cacheEnabled / cacheCount / cacheDelayfalse / 3 / 3Finestra e ritardo di precaricamento delle pagine in memoria.
autoLoadfalseÈ consigliato un flusso di token esplicito.
largeDoctrueDifferisce dal valore predefinito C#.
fixedZoomfalseDifferisce dal valore predefinito C#.
fixedZoomPercent / fixedZoomPercentMobile100 / 50Il valore mobile differisce da C# (75).
showHyperlinkstrueRichiede l'estrazione lato server per produrre overlay.

Imposta tutti i valori comportamentali importanti invece di fare affidamento su uno dei due set di predefiniti:

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>

Callback

CallbackArgomentiScopo
onPageLoadingpageNumUna richiesta di pagina sta iniziando.
onPageLoadedpageNumL'immagine di una pagina ha terminato il caricamento.
onThumbnailClickedpageNumL'utente ha selezionato una miniatura.
onPageClickedpageNumL'utente ha selezionato una pagina.
onDoubleClicknessunoIl visualizzatore ha ricevuto un doppio clic.
onViewerBusynessunoIl visualizzatore è entrato in uno stato occupato.
onViewerReadynessunoInizializzazione completata.
onViewerErrornessunoIl visualizzatore è entrato nello stato di errore.
onErrormessageUn'operazione ha restituito un messaggio di errore.
onCopydataI dati di copia del testo sono disponibili.
onAutoLoadStatuspageNumIl caricamento automatico è progredito a una pagina.
onThumbsShownnessunoIl pannello delle miniature è diventato visibile.
onAnnLoadednessunoDati di annotazione caricati.
onAnnSavednessunoDati di annotazione salvati.
onAnnSaveErrornessunoSalvataggio dell'annotazione fallito.
onAnnClosednessunoInterfaccia di annotazione chiusa.

Mantieni i callback veloci; invia la telemetria in modo asincrono e non bloccare il rendering della pagina.

Ognuno di questi è un'opzione nell'oggetto di inizializzazione. Il visualizzatore precedente cercava le funzioni globali i cui nomi derivavano dall'ID del contenitore — una pagina con <div id="div_ctlDoc"> doveva solo dichiarare function ctlDoc_OnViewerReady(). Quella ricerca è scomparsa. Passa la funzione esplicitamente:

javascript
objctlDoc = $('#div_ctlDoc').docViewer({
    // ... le tue opzioni esistenti ...
    onViewerBusy:     ctlDoc_OnViewerBusy,      // è stato trovato per nome
    onViewerReady:    ctlDoc_OnViewerReady,     // è stato trovato per nome
    onCopy:           ctlDoc_Copy,              // era ctlDoc_Copy(text)
    onAutoLoadStatus: ctlDoc_AutoLoadStatus     // era ctlDoc_AutoLoadStatus(page)
});

La vecchia ricerca era avvolta in un catch vuoto, quindi nulla veniva mai segnalato. In questa versione le funzioni semplicemente non vengono mai eseguite: il sintomo tipico è uno spinner occupato che non si ferma mai, perché il gestore che lo nascondeva era onViewerReady. Il documento dietro di esso viene renderizzato correttamente.

Non esiste un callback per il clic sui link — la gestione dei collegamenti ipertestuali è integrata e guidata da showHyperlinks.

Gruppi di metodi pubblici

GruppoMetodi comuni
Ciclo di vitaView(token, accessToken?), Close(server?), Token(), Init(), IsLoaded()
NavigazioneGotoPage(page), ShowPage(page, focus?), Next(next), CurrentPage(), TotalPages()
Zoom e adattamentoZoom(zoomIn), CurrentZoom(), FitType(value), Refit()
OrientamentoRotate(page, angle), Flip(page, flipType)
MiniatureHideThumbs(hide), ThumbSize(size), ReloadThumbs(width), ScrollToThumb(thumb)
RicercaCanSearch(), Search(...), SearchMatchCount(), SearchSummary(...), GotoSearchMatch(...)
AnnotazioneSaveAnnotations(), GetAnnotations(), PushAnnotations(...), CloseAnnotations(...), ShowAnnotations(...)
CopiaCopy(...), CopyPage(pageNumber), CopyMode(enabled)

Il file JavaScript contiene anche helper interni. Tratta solo i metodi usati dall’interfaccia di riferimento e documentati qui o nelle guide delle funzionalità come punti di integrazione stabili.

Riprova mentre una pagina distribuita è ancora in rendering

retryOn409 mantiene il suo nome storico. È destinato alla produzione asincrona di pagine e riprova la risposta di disponibilità corrente 202 Accepted così come il segnale più vecchio 409 Conflict. Quando abilitato, il widget effettua polling con questi valori predefiniti JavaScript:

OpzionePredefinito
retryInitialDelayMs250
retryBackoffFactor1.6
retryMaxDelayMs2500
retryMaxAttempts60
retryMaxTotalMs120000

Lascialo disabilitato per il visualizzatore a nodo singolo normale. Abilitarlo non può trasformare un rendering sincrono non supportato in asincrono.

Abilitalo quando le pagine sono servite da storage condiviso con FirstPagePriority, dove le pagine successive rispondono legittimamente 202 Accepted fino a quando non vengono scritte. Un client che non riprova mostra tasselli rotti per le pagine ancora in rendering — vedi Distribuzioni distribuite.

Checklist del percorso

  • DoconutOptions.MiddlewarePath deve descrivere il ramo che effettivamente mappi.
  • BasePath deve puntare a quel ramo, scritto senza una barra iniziale / ('doconut', non '/doconut': il visualizzatore aggiunge la barra, e //doconut/... è una richiesta a un altro host). L’applicazione di riferimento mantiene la forma storica della richiesta DocImage.axd su un ramo MapWhen e quindi imposta BasePath: '/'.
  • DoconutOptions.ResourcesPath è il percorso della risorsa incorporata.
  • ResPath normalmente punta alla sua sottocartella images, senza una barra iniziale — 'doconut-res/images' con il prefisso predefinito. Un ResPath vuoto era corretto nella libreria precedente, dove le risorse provenivano dalla radice dell’applicazione; non è corretto qui e provoca un fallimento senza errore.
  • ExtractHyperlinks deve essere abilitato nella configurazione del formato server prima che showHyperlinks possa visualizzare qualcosa.

Questa pagina è stata utile?