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
ResPathmusi 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#
| Typ | Właściwość | Domyślne | Opis |
|---|---|---|---|
bool | ShowThumbs | true | Wyświetla panel miniatur. |
bool | AutoLoad | false | Automatycznie ładuje po inicjalizacji. Normalny przepływ tokena wywołuje View(token) explicite. |
bool | AutoFocus | true | Przenosi fokus/scroll przeglądarki do widoku 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 | Wyświetla podpowiedź z pozycją strony podczas przewijania. |
string | ToolTipPageText | "Page " | Prefiks używany w podpowiedzi strony. |
bool | CacheEnabled | false | Utrzymuje ruchome okno obrazów stron w pamięci przeglądarki. Nie używa localStorage. |
bool | LargeDoc | false | Dodaje elementy stron w partiach czasowych 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 przeliczania. |
int | FixedZoomPercent | 100 | Stałe powiększenie na komputerze stacjonarnym. |
int | FixedZoomPercentMobile | 75 | Stałe powiększenie na urządzeniach mobilnych. |
string | BasePath | "/" | Gałąź, w której host mapuje UseDoconut(). |
string | ResPath | "doconut-res" | Podstawa zasobów używana przez widżet. W normalnej konfiguracji wskazuje na <ResourcesPath>/images. |
string | FitType | "width" | "width", "height" lub pusty dla braku automatycznego dopasowania. "page" nie jest akceptowane przez bieżący widżet. |
bool | RetryOn409 | false | Włą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. |
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 |
|---|---|
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 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.
| 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 | maxZoom w JavaScript różni się od C# (300). |
showToolTip / toolTipPageText | true / "Page " | Podpowiedź z pozycją strony. |
format / doc / AccessToken | "" / 0 / "" | Wewnętrzne wartości inicjalizacji; zazwyczaj wypełniane przez View(token). |
debugMode | false | Dodatkowa 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 / cacheDelay | false / 3 / 3 | Okno w pamięci i opóźnienie wstępnego ładowania stron. |
autoLoad | false | Zalecany jest explicite przepływ tokena. |
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, aby wyświetlić nakładki. |
Ustaw wszystkie istotne wartości zamiast polegać na którekolwiek z zestawów domyślnych:
<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 | Widok otrzymał podwójne kliknięcie. |
onViewerBusy | none | Widok wszedł w stan zajętości. |
onViewerReady | none | Inicjalizacja zakończona. |
onViewerError | none | Widok 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 kolejnej strony. |
onThumbsShown | none | Panel miniatur stał się widoczny. |
onAnnLoaded | none | Dane adnotacji zostały załadowane. |
onAnnSaved | none | Dane adnotacji zostały zapisane. |
onAnnSaveError | none | Zapis adnotacji nie powiódł się. |
onAnnClosed | none | Interfejs 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:
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
| 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 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:
| Opcja | Domyślne |
|---|---|
retryInitialDelayMs | 250 |
retryBackoffFactor | 1.6 |
retryMaxDelayMs | 2500 |
retryMaxAttempts | 60 |
retryMaxTotalMs | 120000 |
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.MiddlewarePathmusi opisywać gałąź, którą faktycznie mapujesz.BasePathmusi wskazywać tę gałąź. Aplikacja referencyjna zachowuje historyczną formę żądaniaDocImage.axdna gałęziMapWheni dlatego ustawiaBasePath: '/'.DoconutOptions.ResourcesPathto wbudowana trasa zasobów.ResPathzazwyczaj wskazuje podfolder/images—'doconut-res/images'przy domyślnym prefiksie. PustyResPathbył prawidłowy w poprzedniej bibliotece, gdzie zasoby pochodziły z korzenia aplikacji; tutaj nie jest prawidłowy i powoduje błąd bez komunikatu.ExtractHyperlinksmusi być włączone w konfiguracji formatu serwera, zanimshowHyperlinksbędzie mógł coś wyświetlić.
Czy ta strona była pomocna?