ViewerConfig

Opcje widżetu przeglądarki klienckiej

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

Dwie zmiany po stronie klienta w tym wydaniu nie wyświetlają błędów. Funkcje obsługi są przekazywane jako opcje — widżet nie wyciąga już globalnych nazw funkcji z identyfikatora kontenera — oraz ResPath musi wskazywać prefiks zasobów, a nie korzeń aplikacji. Oba elementy pozostawiają serwer w pełni sprawnym i nie zgłaszają nic w konsoli przeglądarki. Jeśli przenosisz stronę z poprzedniej biblioteki, przeczytaj Wywołania zwrotne i Lista kontrolna ścieżek przed czymkolwiek innym.

Właściwości C#

TypWłaściwośćDomyślneOpis
boolShowThumbstrueWyświetla panel miniatur.
boolAutoLoadfalseAutomatycznie ładuje po inicjalizacji. Normalny przepływ tokena wywołuje View(token) explicite.
boolAutoFocustruePrzenosi fokus/scroll przeglądarki do widoku 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.
boolShowToolTiptrueWyświetla podpowiedź z pozycją strony podczas przewijania.
stringToolTipPageText"Page "Prefiks używany w podpowiedzi strony.
boolCacheEnabledfalseUtrzymuje ruchome okno obrazów stron w pamięci przeglądarki. Nie używa localStorage.
boolLargeDocfalseDodaje elementy stron w partiach czasowych 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 przeliczania.
intFixedZoomPercent100Stałe powiększenie na komputerze stacjonarnym.
intFixedZoomPercentMobile75Stałe powiększenie na urządzeniach mobilnych.
stringBasePath"/"Gałąź, w której host mapuje UseDoconut().
stringResPath"doconut-res"Podstawa zasobów używana przez widżet. W normalnej konfiguracji wskazuje na <ResourcesPath>/images.
stringFitType"width""width", "height" lub pusty dla braku automatycznego dopasowania. "page" nie jest akceptowane przez bieżący widżet.
boolRetryOn409falseWłącza odpytywanie, gdy asynchroniczna/rozproszona produkcja stron zwraca 202 Accepted; 409 jest także akceptowane dla zgodności ze starszymi serwerami. Nie jest potrzebne w normalnym synchronicznym widoku.
csharp
var config = new ViewerConfig
{
    ShowThumbs = true,
    AutoLoad = false,
    PageZoom = 100,
    MaxZoom = 300,
    FitType = "width",
    BasePath = "/doconut",
    ResPath = "/doconut-res/images",
    ShowHyperlinks = true
};

Mapowanie C# → JavaScript

Nie przekazuj bezpośrednio zserializowanego ViewerConfig do docViewer(...). Większość kluczy widżetu 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 wartości JavaScript

Widżet posiada starsze domyślne ustawienia, 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 / 200maxZoom w JavaScript różni się od C# (300).
showToolTip / toolTipPageTexttrue / "Page "Podpowiedź z pozycją strony.
format / doc / AccessToken"" / 0 / ""Wewnętrzne wartości inicjalizacji; zazwyczaj wypełniane przez View(token).
debugModefalseDodatkowa diagnostyka po stronie klienta.
FitType""Brak automatycznego dopasowania, chyba że zostanie podane.
BasePath"DocImage.axd"Historyczny domyślny klienta zachowany dla kompatybilności. Aktualne hosty ASP.NET Core muszą ustawić go explicite na mapowaną gałąź middleware.
ResPath""Ustaw explicite na ścieżkę wbudowanych obrazów.
cacheEnabled / cacheCount / cacheDelayfalse / 3 / 3Okno w pamięci i opóźnienie wstępnego ładowania stron.
autoLoadfalseZalecany jest explicite przepływ tokena.
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, aby wyświetlić nakładki.

Ustaw wszystkie istotne wartości zamiast polegać na którekolwiek z zestawów domyślnych:

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ę.
onDoubleClicknoneWidok otrzymał podwójne kliknięcie.
onViewerBusynoneWidok wszedł w stan zajętości.
onViewerReadynoneInicjalizacja zakończona.
onViewerErrornoneWidok wszedł w stan błędu.
onErrormessageOperacja zwróciła komunikat o błędzie.
onCopydataDostępne są dane kopiowania tekstu.
onAutoLoadStatuspageNumAutomatyczne ładowanie postępuje do kolejnej strony.
onThumbsShownnonePanel miniatur stał się widoczny.
onAnnLoadednoneDane adnotacji zostały załadowane.
onAnnSavednoneDane adnotacji zostały zapisane.
onAnnSaveErrornoneZapis adnotacji nie powiódł się.
onAnnClosednoneInterfejs adnotacji został zamknięty.

Utrzymuj wywołania zwrotne krótkie; wysyłaj telemetrykę asynchronicznie i nie blokuj renderowania stron.

Każde z nich jest opcją w obiekcie inicjalizacyjnym. Poprzedni widok wyszukiwał globalne funkcje, których nazwy wyprowadzano z identyfikatora kontenera — strona z <div id="div_ctlDoc"> musiała zadeklarować function ctlDoc_OnViewerReady(). To wyszukiwanie zostało usunięte. Przekaż funkcję explicite:

javascript
objctlDoc = $('#div_ctlDoc').docViewer({
    // ... twoje istniejące opcje ...
    onViewerBusy:     ctlDoc_OnViewerBusy,      // było znajdowane po nazwie
    onViewerReady:    ctlDoc_OnViewerReady,     // było znajdowane po nazwie
    onCopy:           ctlDoc_Copy,              // było ctlDoc_Copy(text)
    onAutoLoadStatus: ctlDoc_AutoLoadStatus     // było ctlDoc_AutoLoadStatus(page)
});

Stare wyszukiwanie było owinięte pustym catch, więc nic nigdy nie było zgłaszane. W tym wydaniu funkcje po prostu nigdy się nie uruchamiają: typowym objawem jest wirujący wskaźnik zajętości, który nie znika, ponieważ obsługa go ukrywająca (onViewerReady) nie została wywołana. Dokument za nim renderuje się poprawnie.

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

Grupy metod publicznych

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 także wewnętrzne pomocniki. Traktuj jako stabilne jedynie metody używane w interfejsie referencyjnym i udokumentowane tutaj lub w przewodnikach funkcji.

Ponowne próby, gdy rozproszona strona nadal jest renderowana

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

OpcjaDomyślne
retryInitialDelayMs250
retryBackoffFactor1.6
retryMaxDelayMs2500
retryMaxAttempts60
retryMaxTotalMs120000

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

Włącz, gdy strony są serwowane z współdzielonego magazynu z FirstPagePriority, gdzie późniejsze strony rzeczywiście odpowiadają 202 Accepted, dopóki nie zostaną zapisane. Klient, który nie ponawia, pokazuje uszkodzone kafelki dla wciąż renderujących się stron — zobacz Rozproszone wdrożenia.

Lista kontrolna ścieżek

  • DoconutOptions.MiddlewarePath musi opisywać gałąź, którą faktycznie mapujesz.
  • BasePath musi wskazywać tę gałąź. Aplikacja referencyjna zachowuje historyczną formę żądania DocImage.axd na gałęzi MapWhen i dlatego ustawia BasePath: '/'.
  • DoconutOptions.ResourcesPath to wbudowana trasa zasobów.
  • ResPath zazwyczaj wskazuje podfolder /images'doconut-res/images' przy domyślnym prefiksie. Pusty ResPath był prawidłowy w poprzedniej bibliotece, gdzie zasoby pochodziły z korzenia aplikacji; tutaj nie jest prawidłowy i powoduje błąd bez komunikatu.
  • ExtractHyperlinks musi być włączone w konfiguracji formatu serwera, zanim showHyperlinks będzie mógł coś wyświetlić.

Czy ta strona była pomocna?