ViewerConfig

Opcje widgetu przeglądarki klienta

ViewerConfig (namespace Doconut) opisuje wygląd i zachowanie przeglądarki w przeglądarce. Nie wpływa na jakość renderowania dokumentu; do tego użyj konfiguracji formatu. Klasa C# i długo istniejący widget JavaScript mają różne wartości domyślne, więc mapuj wartości explicite.

Dwie zmiany po stronie klienta w tej wersji nie wywołują błędów. Funkcje obsługi są przekazywane jako opcje — widget już nie wyprowadza globalnych nazw funkcji z identyfikatora kontenera — oraz ResPath musi wskazywać prefiks zasobów, a nie korzeń aplikacji. Obie pozostawiają serwer w pełni sprawnym i nie zgłaszają nic w konsoli przeglądarki. Jeśli przenosisz stronę z poprzedniej biblioteki, przeczytaj Callbacks i Path checklist przed czymkolwiek innym.

Właściwości C#

TypWłaściwośćDomyślnieOpis
boolShowThumbstruePokaż panel miniatur.
boolAutoLoadfalseAutomatycznie ładuje po inicjalizacji. Normalny przepływ tokenów wywołuje View(token) explicite.
boolAutoFocustruePrzesuwa fokus/scroll przeglądarki do przeglądarki podczas inicjalizacji.
boolAutoPageFocustrueUtrzymuje bieżącą miniaturę widoczną podczas zmiany stron.
intPageZoom100Początkowy procent powiększenia.
intZoomStep10Procent dodawany lub odejmowany przez polecenia powiększania.
intMaxZoom300Maksymalny procent powiększenia.
boolShowToolTiptruePokazuje podpowiedź pozycji strony podczas przewijania.
stringToolTipPageText"Page "Prefiks używany w podpowiedzi strony.
boolCacheEnabledfalseUtrzymuje przesuwające się okno obrazów stron w pamięci przeglądarki. Nie używa localStorage.
boolLargeDocfalseDodaje elementy stron w czasowych partiach dla dużych dokumentów.
boolShowHyperlinksfalseRenderuje nakładki hiperłączy, gdy konfiguracja serwera je wyodrębniła.
boolFixedZoomtrueUżywa stałego procentu powiększenia zamiast responsywnego przeliczenia.
intFixedZoomPercent100Stałe powiększenie na pulpicie.
intFixedZoomPercentMobile75Stałe powiększenie na urządzeniach mobilnych.
stringBasePath"/"Miejsce, do którego przeglądarka wysyła żądania stron. "/" to DocImage.axd w katalogu głównym witryny; w przeciwnym razie gałąź, w której host mapuje UseDoconut(), bez początkowego / ("doconut" oznacza /doconut/DocImage.axd).
stringResPath"doconut-res/images" (26.9.0; "doconut-res" przed)Folder, z którego widget ładuje własne obrazy: folder images pod ResourcesPath, bez początkowego /.
stringFitType"width""width", "height" lub pusty, aby nie stosować automatycznego dopasowania. "page" nie jest akceptowane przez bieżący widget.
boolRetryOn409falseWłącza odpytywanie, gdy asynchroniczna/rozproszona produkcja stron zwraca 202 Accepted; 409 jest również akceptowane dla kompatybilności ze starszymi serwerami. Nie jest potrzebne w normalnym synchronicznym przeglądarce.
csharp
var config = new ViewerConfig
{
    ShowThumbs = true,
    AutoLoad = false,
    PageZoom = 100,
    MaxZoom = 300,
    FitType = "width",
    BasePath = "doconut",           // brak początkowego '/': przeglądarka dodaje go ("/doconut" stałoby się //doconut, inny host)
    ResPath = "doconut-res/images",
    ShowHyperlinks = true
};

Mapowanie C# na JavaScript

Nie przekazuj bezpośrednio zserializowanego ViewerConfig do docViewer(...). Większość kluczy widgetu jest w camelCase, podczas gdy trzy ustalone klucze ścieżki/dopasowania są w PascalCase.

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

Domyślne ustawienia JavaScript

Widżet ma starsze wartości domyślne, które różnią się od klasy C#. Poniższe wartości pochodzą z bieżącej implementacji docViewer.js.

OpcjaDomyślneUwagi
leftMinWidth / leftMaxWidth220 / 800Granice szerokości panelu miniatur.
showThumbstruePoczątkowa widoczność miniatur.
autoFocus / autoPageFocustrue / falseautoPageFocus różni się od domyślnego w C#.
thumbWidth / thumbHeight / thumbPadding150 / 200 / 10Geometria miniatur w pikselach.
pageZoom / zoomStep / maxZoom100 / 10 / 200JavaScript maxZoom różni się od C# (300).
showToolTip / toolTipPageTexttrue / "Page "Etykieta podpowiedzi z pozycją strony.
format / doc / AccessToken"" / 0 / ""Wewnętrzne wartości inicjalizacji; zwykle wypełniane przez View(token).
debugModefalseDodatkowa diagnostyka po stronie klienta.
FitType""Brak automatycznego dopasowania, chyba że podano.
BasePath"DocImage.axd"Historyczny domyślny klient zachowany dla kompatybilności. Obecne hosty ASP.NET Core muszą ustawić go wyraźnie na mapowaną gałąź middleware.
ResPath""Ustaw wyraźnie na ścieżkę wbudowanych obrazów.
cacheEnabled / cacheCount / cacheDelayfalse / 3 / 3Okno i opóźnienie wstępnego ładowania stron w pamięci.
autoLoadfalseZalecany jest wyraźny przepływ tokenu.
largeDoctrueRóżni się od domyślnego w C#.
fixedZoomfalseRóżni się od domyślnego w C#.
fixedZoomPercent / fixedZoomPercentMobile100 / 50Wartość mobilna różni się od C# (75).
showHyperlinkstrueWymaga wyodrębnienia po stronie serwera w celu utworzenia nakładek.

Ustaw wszystkie wartości istotne pod względem zachowania zamiast polegać na którejkolwiek z domyślnych konfiguracji:

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>

Wywołania zwrotne

Wywołanie zwrotneArgumentyCel
onPageLoadingpageNumRozpoczyna się żądanie strony.
onPageLoadedpageNumObraz strony zakończył ładowanie.
onThumbnailClickedpageNumUżytkownik wybrał miniaturę.
onPageClickedpageNumUżytkownik wybrał stronę.
onDoubleClicknonePodgląd otrzymał podwójne kliknięcie.
onViewerBusynonePodgląd wszedł w stan zajętości.
onViewerReadynoneInicjalizacja zakończona.
onViewerErrornonePodgląd wszedł w stan błędu.
onErrormessageOperacja zwróciła komunikat o błędzie.
onCopydataDostępne są dane kopiowania tekstu.
onAutoLoadStatuspageNumAutomatyczne ładowanie postępuje do strony.
onThumbsShownnonePanel miniatur stał się widoczny.
onAnnLoadednoneDane adnotacji załadowane.
onAnnSavednoneDane adnotacji zapisane.
onAnnSaveErrornoneZapis adnotacji nie powiódł się.
onAnnClosednoneInterfejs adnotacji zamknięty.

Utrzymuj wywołania zwrotne szybkie; wysyłaj telemetrykę asynchronicznie i nie blokuj renderowania strony.

Każde z nich jest opcją w obiekcie inicjalizacyjnym. Poprzedni podgląd wyszukiwał globalne funkcje, których nazwy wyprowadzał z identyfikatora kontenera — strona z <div id="div_ctlDoc"> musiała jedynie zadeklarować function ctlDoc_OnViewerReady(). To wyszukiwanie zniknęło. Przekaż funkcję wyraźnie:

javascript
objctlDoc = $('#div_ctlDoc').docViewer({
    // ... your existing options ...
    onViewerBusy:     ctlDoc_OnViewerBusy,      // was found by name
    onViewerReady:    ctlDoc_OnViewerReady,     // was found by name
    onCopy:           ctlDoc_Copy,              // was ctlDoc_Copy(text)
    onAutoLoadStatus: ctlDoc_AutoLoadStatus     // was ctlDoc_AutoLoadStatus(page)
});

Stare wyszukiwanie było owinięte w pusty catch, więc nic nie było zgłaszane. W tej wersji funkcje po prostu nigdy się nie wykonują: typowy objaw to nieustannie obracający się wskaźnik zajętości, ponieważ obsługa, która go ukrywała, była onViewerReady. Dokument za nim renderuje się prawidłowo.

Nie ma wywołania zwrotnego przy kliknięciu linku — obsługa hiperłączy jest wbudowana i sterowana przez showHyperlinks.

Publiczne grupy metod

GrupaWspólne metody
Cykl życiaView(token, accessToken?), Close(server?), Token(), Init(), IsLoaded()
NawigacjaGotoPage(page), ShowPage(page, focus?), Next(next), CurrentPage(), TotalPages()
Powiększanie i dopasowanieZoom(zoomIn), CurrentZoom(), FitType(value), Refit()
OrientacjaRotate(page, angle), Flip(page, flipType)
MiniaturyHideThumbs(hide), ThumbSize(size), ReloadThumbs(width), ScrollToThumb(thumb)
WyszukiwanieCanSearch(), Search(...), SearchMatchCount(), SearchSummary(...), GotoSearchMatch(...)
AdnotacjeSaveAnnotations(), GetAnnotations(), PushAnnotations(...), CloseAnnotations(...), ShowAnnotations(...)
KopiowanieCopy(...), CopyPage(pageNumber), CopyMode(enabled)

Plik JavaScript zawiera również wewnętrzne pomocnicze funkcje. Traktuj wyłącznie metody używane przez referencyjny interfejs użytkownika i udokumentowane tutaj lub w przewodnikach funkcji jako stabilne punkty integracji.

Ponawianie, gdy rozproszona strona nadal jest renderowana

retryOn409 zachowuje swoją historyczną nazwę. Służy do asynchronicznej produkcji stron i ponawia bieżącą odpowiedź gotowości 202 Accepted oraz starszy sygnał 409 Conflict. Po włączeniu widget odpyta z tymi domyślnymi wartościami JavaScript:

OpcjaDomyślnie
retryInitialDelayMs250
retryBackoffFactor1.6
retryMaxDelayMs2500
retryMaxAttempts60
retryMaxTotalMs120000

Pozostaw wyłączone dla standardowego jednowęzłowego podglądu. Włączenie nie może uczynić nieobsługiwanego renderowania synchronicznego asynchronicznym.

Włącz go, gdy strony są serwowane z udostępnionego magazynu przy użyciu FirstPagePriority, gdzie późniejsze strony prawidłowo zwracają 202 Accepted, dopóki nie zostaną zapisane. Klient, który nie ponawia, wyświetla uszkodzone kafelki dla stron nadal renderowanych — zobacz Rozproszone wdrożenia.

Lista kontrolna ścieżek

  • DoconutOptions.MiddlewarePath musi opisywać gałąź, którą faktycznie mapujesz.
  • BasePath musi wskazywać tę gałąź, zapisaną bez początkowego / ('doconut', a nie '/doconut': podgląd dodaje ukośnik, a //doconut/... jest żądaniem do innego hosta). Aplikacja referencyjna zachowuje historyczny kształt żądania DocImage.axd na gałęzi MapWhen i dlatego ustawia BasePath: '/'.
  • DoconutOptions.ResourcesPath jest trasą wbudowanych zasobów.
  • ResPath zazwyczaj wskazuje podfolder images, bez początkowego / — 'doconut-res/images' z domyślnym prefiksem. Pusty ResPath był poprawny w poprzedniej bibliotece, gdzie zasoby pochodziły z katalogu głównego aplikacji; nie jest prawidłowy tutaj i powoduje niepowodzenie bez błędu.
  • ExtractHyperlinks musi być włączony w konfiguracji formatu serwera, zanim showHyperlinks będzie mógł wyświetlić cokolwiek.

Czy ta strona była pomocna?