ViewerConfig

Možnosti widgetu klientského prohlížeče

ViewerConfig (namespace Doconut) popisuje vzhled a chování prohlížeče. Nemá vliv na kvalitu vykreslování dokumentu; použijte konfigurační formát pro to. Třída C# a dlouho existující JavaScript widget mají odlišné výchozí hodnoty, takže hodnoty mapujte explicitně.

Dvě změny na straně klienta v tomto vydání selhávají tiše. Funkce obsluhy jsou předávány jako možnosti — widget již neodvozuje globální názvy funkcí z ID kontejneru — a ResPath musí ukazovat na předponu zdrojů místo kořene aplikace. Obě ponechávají server v perfektním stavu a nic nehlásí v konzoli prohlížeče. Pokud přenášíte stránku z předchozí knihovny, přečtěte si Zpětná volání a Kontrolní seznam cest před čímkoli jiným.

Vlastnosti C#

TypVlastnostVýchozíPopis
boolShowThumbstrueZobrazit panel miniatur.
boolAutoLoadfalseAutomaticky načíst po inicializaci. Normální tok tokenu volá View(token) explicitně.
boolAutoFocustruePřesunout fokus/posun prohlížeče na prohlížeč během inicializace.
boolAutoPageFocustrueUdržet aktuální miniaturu viditelnou při změně stránek.
intPageZoom100Počáteční procento přiblížení.
intZoomStep10Procento přidávané nebo odebrané příkazy zoomu.
intMaxZoom300Maximální procento přiblížení.
boolShowToolTiptrueZobrazit tooltip pozice stránky při posouvání.
stringToolTipPageText"Page "Předpona používaná v tooltipu stránky.
boolCacheEnabledfalseUdržovat pohyblivé okno obrázků stránek v paměti prohlížeče. Nepoužívá localStorage.
boolLargeDocfalsePřidávat elementy stránek ve časovaných dávkách pro velké dokumenty.
boolShowHyperlinksfalseVykreslovat překryvy hyperodkazů, pokud je serverová konfigurace extrahovala.
boolFixedZoomtruePoužít pevné procento přiblížení místo responzivního přepočtu.
intFixedZoomPercent100Pevné přiblížení pro desktop.
intFixedZoomPercentMobile75Pevné přiblížení pro mobil.
stringBasePath"/"Větev, kde host mapuje UseDoconut().
stringResPath"doconut-res"Základní cesta zdrojů používaná widgetem. V normálním nastavení ukazujte na <ResourcesPath>/images.
stringFitType"width""width", "height" nebo prázdné pro žádné automatické přizpůsobení. "page" není aktuálním widgetem akceptováno.
boolRetryOn409falsePovolit polling, když asynchronní/rozptýlená produkce stránek odpovídá 202 Accepted; 409 je také akceptováno pro kompatibilitu se staršími servery. Není potřeba pro normální synchronní prohlížeč.
csharp
var config = new ViewerConfig
{
    ShowThumbs = true,
    AutoLoad = false,
    PageZoom = 100,
    MaxZoom = 300,
    FitType = "width",
    BasePath = "/doconut",
    ResPath = "/doconut-res/images",
    ShowHyperlinks = true
};

Mapování C# na JavaScript

Nepředávejte přímo serializovaný ViewerConfig do docViewer(...). Většina klíčů widgetu je ve formátu camelCase, zatímco tři zavedené klíče pro cestu/přizpůsobení jsou ve formátu PascalCase.

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

Výchozí hodnoty JavaScriptu

Widget má starší výchozí hodnoty, které se liší od třídy C#. Následující hodnoty pocházejí z aktuální implementace docViewer.js.

MožnostVýchozíPoznámky
leftMinWidth / leftMaxWidth220 / 800Meze šířky panelu miniatur.
showThumbstruePočáteční viditelnost miniatur.
autoFocus / autoPageFocustrue / falseautoPageFocus se liší od výchozí hodnoty v C#.
thumbWidth / thumbHeight / thumbPadding150 / 200 / 10Geometrie miniatur v pixelech.
pageZoom / zoomStep / maxZoom100 / 10 / 200JavaScript maxZoom se liší od C# (300).
showToolTip / toolTipPageTexttrue / "Page "Tooltip pozice stránky.
format / doc / AccessToken"" / 0 / ""Interní hodnoty inicializace; normálně naplněny View(token).
debugModefalseDalší diagnostika na klientovi.
FitType""Žádné automatické přizpůsobení, pokud není zadáno.
BasePath"DocImage.axd"Historický výchozí klient zachován pro kompatibilitu. Aktuální hosté ASP.NET Core musí nastavit explicitně na mapovanou větev middleware.
ResPath""Nastavte explicitně na cestu vložených obrázků.
cacheEnabled / cacheCount / cacheDelayfalse / 3 / 3Okno a zpoždění přednačítání stránek v paměti.
autoLoadfalseDoporučuje se explicitní tok tokenu.
largeDoctrueLiší se od výchozí hodnoty v C#.
fixedZoomfalseLiší se od výchozí hodnoty v C#.
fixedZoomPercent / fixedZoomPercentMobile100 / 50Mobilní hodnota se liší od C# (75).
showHyperlinkstrueVyžaduje extrakci na serveru pro vytvoření překryvů.

Nastavte všechny behaviorálně důležité hodnoty místo spoléhání se na některý ze souborů výchozích hodnot:

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>

Zpětná volání

Zpětné voláníArgumentyÚčel
onPageLoadingpageNumPočíná požadavek na stránku.
onPageLoadedpageNumObrázek stránky byl načten.
onThumbnailClickedpageNumUživatel vybral miniaturu.
onPageClickedpageNumUživatel vybral stránku.
onDoubleClicknoneProhlížeč obdržel dvojklik.
onViewerBusynoneProhlížeč vstoupil do stavu zaneprázdněnosti.
onViewerReadynoneInicializace dokončena.
onViewerErrornoneProhlížeč vstoupil do chybového stavu.
onErrormessageOperace vrátila chybovou zprávu.
onCopydataData pro kopírování textu jsou k dispozici.
onAutoLoadStatuspageNumAutomatické načítání postupovalo na stránku.
onThumbsShownnonePanel miniatur se stal viditelným.
onAnnLoadednoneData anotací načtena.
onAnnSavednoneData anotací uložena.
onAnnSaveErrornoneUložení anotací selhalo.
onAnnClosednoneUživatelské rozhraní anotací zavřeno.

Udržujte zpětná volání rychlá; odesílejte telemetrii asynchronně a neblokujte vykreslování stránky.

Každá z těchto položek je možností v init objektu. Předchozí prohlížeč vyhledával globální funkce, jejichž názvy odvozoval od ID kontejneru — stránka s <div id="div_ctlDoc"> stačila deklarovat function ctlDoc_OnViewerReady(). Toto vyhledávání bylo odstraněno. Funkci předávejte explicitně:

javascript
objctlDoc = $('#div_ctlDoc').docViewer({
    // ... vaše stávající možnosti ...
    onViewerBusy:     ctlDoc_OnViewerBusy,      // bylo nalezeno podle názvu
    onViewerReady:    ctlDoc_OnViewerReady,     // bylo nalezeno podle názvu
    onCopy:           ctlDoc_Copy,              // bylo ctlDoc_Copy(text)
    onAutoLoadStatus: ctlDoc_AutoLoadStatus     // bylo ctlDoc_AutoLoadStatus(page)
});

Staré vyhledávání bylo zabalené do prázdného catch, takže se nic nehlásilo. V tomto vydání funkce prostě nikdy neběží: typickým příznakem je neustále se otáčející indikátor zaneprázdněnosti, který se nikdy nezastaví, protože obsluha, která jej skrývala, byla onViewerReady. Dokument za ním se však vykresluje správně.

Není k dispozici zpětné volání pro kliknutí na odkaz — zpracování hyperodkazů je vestavěné a řízené pomocí showHyperlinks.

Veřejné skupiny metod

SkupinaSpolečné metody
Životní cyklusView(token, accessToken?), Close(server?), Token(), Init(), IsLoaded()
NavigaceGotoPage(page), ShowPage(page, focus?), Next(next), CurrentPage(), TotalPages()
Zoom a přizpůsobeníZoom(zoomIn), CurrentZoom(), FitType(value), Refit()
OrientaceRotate(page, angle), Flip(page, flipType)
MiniaturyHideThumbs(hide), ThumbSize(size), ReloadThumbs(width), ScrollToThumb(thumb)
VyhledáváníCanSearch(), Search(...), SearchMatchCount(), SearchSummary(...), GotoSearchMatch(...)
AnotaceSaveAnnotations(), GetAnnotations(), PushAnnotations(...), CloseAnnotations(...), ShowAnnotations(...)
KopírováníCopy(...), CopyPage(pageNumber), CopyMode(enabled)

Soubor JavaScript také obsahuje interní pomocné funkce. Jako stabilní integrační body považujte pouze metody používané referenčním UI a dokumentované zde nebo v průvodcích funkcí.

Opakování, dokud je distribuovaná stránka stále renderována

retryOn409 si zachovává svůj historický název. Slouží k asynchronní produkci stránek a opakovaně dotazuje aktuální odpověď připravenosti 202 Accepted i starší signál 409 Conflict. Když je povoleno, widget provádí polling s těmito výchozími hodnotami JavaScriptu:

MožnostVýchozí
retryInitialDelayMs250
retryBackoffFactor1.6
retryMaxDelayMs2500
retryMaxAttempts60
retryMaxTotalMs120000

Ponechte jej zakázáno pro běžný jednojádrový prohlížeč. Povolení nemůže učinit nepodporované synchronní vykreslení asynchronním.

Povolte jej, když jsou stránky poskytovány ze sdíleného úložiště s FirstPagePriority, kde pozdější stránky legitimně odpovídají 202 Accepted, dokud nejsou zapsány. Klient, který neprovádí opakování, zobrazuje poškozené dlaždice pro stránky, které se stále vykreslují — viz Distribuovaná nasazení.

Kontrolní seznam cest

  • DoconutOptions.MiddlewarePath musí popisovat větev, kterou skutečně mapujete.
  • BasePath musí cílit na tuto větev. Referenční aplikace zachovává historický tvar požadavku DocImage.axd na větvi MapWhen a proto nastavuje BasePath: '/'.
  • DoconutOptions.ResourcesPath je cesta k vloženým zdrojům.
  • ResPath normálně cílí na podsložku /images'doconut-res/images' s výchozím prefixem. Prázdný ResPath byl správný v předchozí knihovně, kde zdroje pocházely z kořene aplikace; zde to není správné a selže bez chyby.
  • ExtractHyperlinks musí být povoleno v konfiguračním formátu serveru, než showHyperlinks může něco zobrazit.

Byla tato stránka užitečná?