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
ResPathmusi 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#
| Typ | Właściwość | Domyślnie | Opis |
|---|---|---|---|
bool | ShowThumbs | true | Pokaż panel miniatur. |
bool | AutoLoad | false | Automatycznie ładuje po inicjalizacji. Normalny przepływ tokenów wywołuje View(token) explicite. |
bool | AutoFocus | true | Przesuwa fokus/scroll przeglądarki do przeglądarki podczas inicjalizacji. |
bool | AutoPageFocus | true | Utrzymuje bieżącą miniaturę widoczną podczas zmiany stron. |
int | PageZoom | 100 | Początkowy procent powiększenia. |
int | ZoomStep | 10 | Procent dodawany lub odejmowany przez polecenia powiększania. |
int | MaxZoom | 300 | Maksymalny procent powiększenia. |
bool | ShowToolTip | true | Pokazuje podpowiedź pozycji strony podczas przewijania. |
string | ToolTipPageText | "Page " | Prefiks używany w podpowiedzi strony. |
bool | CacheEnabled | false | Utrzymuje przesuwające się okno obrazów stron w pamięci przeglądarki. Nie używa localStorage. |
bool | LargeDoc | false | Dodaje elementy stron w czasowych partiach dla dużych dokumentów. |
bool | ShowHyperlinks | false | Renderuje nakładki hiperłączy, gdy konfiguracja serwera je wyodrębniła. |
bool | FixedZoom | true | Używa stałego procentu powiększenia zamiast responsywnego przeliczenia. |
int | FixedZoomPercent | 100 | Stałe powiększenie na pulpicie. |
int | FixedZoomPercentMobile | 75 | Stałe powiększenie na urządzeniach mobilnych. |
string | BasePath | "/" | 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). |
string | ResPath | "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 /. |
string | FitType | "width" | "width", "height" lub pusty, aby nie stosować automatycznego dopasowania. "page" nie jest akceptowane przez bieżący widget. |
bool | RetryOn409 | false | Włą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. |
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 |
|---|---|
ShowThumbs | showThumbs |
AutoLoad | autoLoad |
AutoFocus | autoFocus |
AutoPageFocus | autoPageFocus |
PageZoom | pageZoom |
ZoomStep | zoomStep |
MaxZoom | maxZoom |
ShowToolTip | showToolTip |
ToolTipPageText | toolTipPageText |
CacheEnabled | cacheEnabled |
LargeDoc | largeDoc |
ShowHyperlinks | showHyperlinks |
FixedZoom | fixedZoom |
FixedZoomPercent | fixedZoomPercent |
FixedZoomPercentMobile | fixedZoomPercentMobile |
BasePath | BasePath |
ResPath | ResPath |
FitType | FitType |
RetryOn409 | retryOn409 |
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.
| Opcja | Domyślne | Uwagi |
|---|---|---|
leftMinWidth / leftMaxWidth | 220 / 800 | Granice szerokości panelu miniatur. |
showThumbs | true | Początkowa widoczność miniatur. |
autoFocus / autoPageFocus | true / false | autoPageFocus różni się od domyślnego w C#. |
thumbWidth / thumbHeight / thumbPadding | 150 / 200 / 10 | Geometria miniatur w pikselach. |
pageZoom / zoomStep / maxZoom | 100 / 10 / 200 | JavaScript maxZoom różni się od C# (300). |
showToolTip / toolTipPageText | true / "Page " | Etykieta podpowiedzi z pozycją strony. |
format / doc / AccessToken | "" / 0 / "" | Wewnętrzne wartości inicjalizacji; zwykle wypełniane przez View(token). |
debugMode | false | Dodatkowa 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 / cacheDelay | false / 3 / 3 | Okno i opóźnienie wstępnego ładowania stron w pamięci. |
autoLoad | false | Zalecany jest wyraźny przepływ tokenu. |
largeDoc | true | Różni się od domyślnego w C#. |
fixedZoom | false | Różni się od domyślnego w C#. |
fixedZoomPercent / fixedZoomPercentMobile | 100 / 50 | Wartość mobilna różni się od C# (75). |
showHyperlinks | true | Wymaga 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:
<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 zwrotne | Argumenty | Cel |
|---|---|---|
onPageLoading | pageNum | Rozpoczyna się żądanie strony. |
onPageLoaded | pageNum | Obraz strony zakończył ładowanie. |
onThumbnailClicked | pageNum | Użytkownik wybrał miniaturę. |
onPageClicked | pageNum | Użytkownik wybrał stronę. |
onDoubleClick | none | Podgląd otrzymał podwójne kliknięcie. |
onViewerBusy | none | Podgląd wszedł w stan zajętości. |
onViewerReady | none | Inicjalizacja zakończona. |
onViewerError | none | Podgląd wszedł w stan błędu. |
onError | message | Operacja zwróciła komunikat o błędzie. |
onCopy | data | Dostępne są dane kopiowania tekstu. |
onAutoLoadStatus | pageNum | Automatyczne ładowanie postępuje do strony. |
onThumbsShown | none | Panel miniatur stał się widoczny. |
onAnnLoaded | none | Dane adnotacji załadowane. |
onAnnSaved | none | Dane adnotacji zapisane. |
onAnnSaveError | none | Zapis adnotacji nie powiódł się. |
onAnnClosed | none | Interfejs 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:
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
| Grupa | Wspólne metody |
|---|---|
| Cykl życia | View(token, accessToken?), Close(server?), Token(), Init(), IsLoaded() |
| Nawigacja | GotoPage(page), ShowPage(page, focus?), Next(next), CurrentPage(), TotalPages() |
| Powiększanie i dopasowanie | Zoom(zoomIn), CurrentZoom(), FitType(value), Refit() |
| Orientacja | Rotate(page, angle), Flip(page, flipType) |
| Miniatury | HideThumbs(hide), ThumbSize(size), ReloadThumbs(width), ScrollToThumb(thumb) |
| Wyszukiwanie | CanSearch(), Search(...), SearchMatchCount(), SearchSummary(...), GotoSearchMatch(...) |
| Adnotacje | SaveAnnotations(), GetAnnotations(), PushAnnotations(...), CloseAnnotations(...), ShowAnnotations(...) |
| Kopiowanie | Copy(...), 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:
| Opcja | Domyślnie |
|---|---|
retryInitialDelayMs | 250 |
retryBackoffFactor | 1.6 |
retryMaxDelayMs | 2500 |
retryMaxAttempts | 60 |
retryMaxTotalMs | 120000 |
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.MiddlewarePathmusi opisywać gałąź, którą faktycznie mapujesz.BasePathmusi 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 żądaniaDocImage.axdna gałęziMapWheni dlatego ustawiaBasePath: '/'.DoconutOptions.ResourcesPathjest trasą wbudowanych zasobów.ResPathzazwyczaj wskazuje podfolderimages, bez początkowego/—'doconut-res/images'z domyślnym prefiksem. PustyResPathbył poprawny w poprzedniej bibliotece, gdzie zasoby pochodziły z katalogu głównego aplikacji; nie jest prawidłowy tutaj i powoduje niepowodzenie bez błędu.ExtractHyperlinksmusi być włączony w konfiguracji formatu serwera, zanimshowHyperlinksbędzie mógł wyświetlić cokolwiek.
Czy ta strona była pomocna?