ViewerConfig
Optionen für das Client‑Viewer‑Widget
ViewerConfig (Namespace Doconut) beschreibt das Aussehen und Verhalten des Browser‑Viewers. Es beeinflusst nicht die Dokumentendarstellungsqualität; dafür verwenden Sie eine Format‑Konfiguration. Die C#‑Klasse und das langjährige JavaScript‑Widget haben unterschiedliche Vorgaben, daher Werte explizit zuordnen.
Zwei clientseitige Änderungen in dieser Version schlagen stillschweigend fehl. Handler‑Funktionen werden als Optionen übergeben — das Widget leitet keine globalen Funktionsnamen mehr aus der Container‑ID ab — und
ResPathmuss auf das Ressourcen‑Präfix statt auf das Anwendungs‑Root zeigen. Beide lassen den Server einwandfrei arbeiten und melden nichts in der Browser‑Konsole. Wenn Sie eine Seite aus der vorherigen Bibliothek weiterführen, lesen Sie zuerst Rückrufe und Pfad‑Checkliste.
C#‑Eigenschaften
| Typ | Eigenschaft | Standardwert | Beschreibung |
|---|---|---|---|
bool | ShowThumbs | true | Zeigt das Miniatur‑Panel an. |
bool | AutoLoad | false | Lädt nach der Initialisierung automatisch. Der normale Token‑Ablauf ruft View(token) explizit auf. |
bool | AutoFocus | true | Verschiebt den Browser‑Fokus/Scroll zum Viewer während der Initialisierung. |
bool | AutoPageFocus | true | Hält die aktuelle Miniatur sichtbar, während sich die Seiten ändern. |
int | PageZoom | 100 | Anfangs‑Zoom‑Prozentsatz. |
int | ZoomStep | 10 | Prozentsatz, der durch Zoom‑Befehle hinzugefügt oder entfernt wird. |
int | MaxZoom | 300 | Maximaler Zoom‑Prozentsatz. |
bool | ShowToolTip | true | Zeigt das Seiten‑Positions‑Tooltip beim Scrollen an. |
string | ToolTipPageText | "Page " | Präfix, das im Seiten‑Tooltip verwendet wird. |
bool | CacheEnabled | false | Behält ein rollierendes Fenster von Seitenbildern im Browser‑Speicher. Es verwendet kein localStorage. |
bool | LargeDoc | false | Fügt Seitenelemente in zeitgesteuerten Stapeln für große Dokumente hinzu. |
bool | ShowHyperlinks | false | Rendert Hyperlink‑Overlays, wenn die Server‑Konfiguration sie extrahiert hat. |
bool | FixedZoom | true | Verwendet einen festen Zoom‑Prozentsatz statt einer responsiven Neuberechnung. |
int | FixedZoomPercent | 100 | Fester Desktop‑Zoom. |
int | FixedZoomPercentMobile | 75 | Fester mobiler Zoom. |
string | BasePath | "/" | Wo der Viewer Seitenanfragen sendet. "/" ist DocImage.axd im Seiten‑Root; sonst der Zweig, wo der Host UseDoconut() abbildet, ohne führendes / ("doconut" bedeutet /doconut/DocImage.axd). |
string | ResPath | "doconut-res/images" (26.9.0; vorher "doconut-res" ) | Ordner, aus dem das Widget seine eigenen Bilder lädt: der images‑Ordner unter ResourcesPath, ohne führendes /. |
string | FitType | "width" | „width“, „height“ oder leer für keine automatische Anpassung. „page“ wird vom aktuellen Widget nicht akzeptiert. |
bool | RetryOn409 | false | Aktiviert Polling, wenn asynchrone/verteilte Seitenerstellung 202 Accepted zurückgibt; 409 wird ebenfalls aus Kompatibilitätsgründen mit älteren Servern akzeptiert. Nicht nötig für den normalen synchronen Viewer. |
var config = new ViewerConfig
{
ShowThumbs = true,
AutoLoad = false,
PageZoom = 100,
MaxZoom = 300,
FitType = "width",
BasePath = "doconut", // kein führendes '/': der Viewer fügt es hinzu ("/doconut" würde zu //doconut, ein anderer Host werden)
ResPath = "doconut-res/images",
ShowHyperlinks = true
};C#‑zu‑JavaScript‑Zuordnung
Übergeben Sie nicht ein direkt serialisiertes ViewerConfig‑Objekt an docViewer(...). Die meisten Widget‑Schlüssel sind im camelCase‑Stil, während drei etablierte Pfad‑/Fit‑Schlüssel im PascalCase‑Stil vorliegen.
| 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 |
JavaScript-Standardwerte
Das Widget hat ältere Standardwerte, die von der C#‑Klasse abweichen. Die folgenden Werte stammen aus der aktuellen docViewer.js‑Implementierung.
| Option | Standard | Hinweise |
|---|---|---|
leftMinWidth / leftMaxWidth | 220 / 800 | Grenzwerte für die Breite des Miniaturbereichs. |
showThumbs | true | Anfängliche Sichtbarkeit der Miniaturbilder. |
autoFocus / autoPageFocus | true / false | autoPageFocus unterscheidet sich vom C#‑Standard. |
thumbWidth / thumbHeight / thumbPadding | 150 / 200 / 10 | Miniaturgeometrie in Pixeln. |
pageZoom / zoomStep / maxZoom | 100 / 10 / 200 | JavaScript maxZoom unterscheidet sich von C# (300). |
showToolTip / toolTipPageText | true / "Page " | Tooltip zur Seitenposition. |
format / doc / AccessToken | "" / 0 / "" | Interne Initialisierungswerte; normalerweise von View(token) befüllt. |
debugMode | false | Zusätzliche Client‑Diagnosen. |
FitType | "" | Keine automatische Anpassung, sofern nicht angegeben. |
BasePath | "DocImage.axd" | Historischer Client‑Standard aus Kompatibilitätsgründen beibehalten. Aktuelle ASP.NET Core‑Hosts müssen ihn explizit auf den zugeordneten Middleware‑Zweig setzen. |
ResPath | "" | Explizit auf den Pfad der eingebetteten Bilder setzen. |
cacheEnabled / cacheCount / cacheDelay | false / 3 / 3 | In‑Memory‑Vorladungsfenster und -Verzögerung für Seiten. |
autoLoad | false | Ein expliziter Token‑Fluss wird empfohlen. |
largeDoc | true | Unterscheidet sich vom C#‑Standard. |
fixedZoom | false | Unterscheidet sich vom C#‑Standard. |
fixedZoomPercent / fixedZoomPercentMobile | 100 / 50 | Mobiler Wert unterscheidet sich von C# (75). |
showHyperlinks | true | Erfordert serverseitige Extraktion, um Overlays zu erzeugen. |
Setzen Sie alle verhaltensrelevanten Werte, anstatt sich auf einen der Standardsätze zu verlassen:
<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>Rückruffunktionen
| Rückruffunktion | Argumente | Zweck |
|---|---|---|
onPageLoading | pageNum | Eine Seitenanfrage wird gestartet. |
onPageLoaded | pageNum | Ein Seitenbild wurde geladen. |
onThumbnailClicked | pageNum | Der Benutzer hat eine Miniatur ausgewählt. |
onPageClicked | pageNum | Der Benutzer hat eine Seite ausgewählt. |
onDoubleClick | none | Der Viewer hat einen Doppelklick erhalten. |
onViewerBusy | none | Der Viewer trat in einen beschäftigten Zustand ein. |
onViewerReady | none | Initialisierung abgeschlossen. |
onViewerError | none | Der Viewer trat in den Fehlermodus ein. |
onError | message | Ein Vorgang gab eine Fehlermeldung zurück. |
onCopy | data | Textkopierdaten sind verfügbar. |
onAutoLoadStatus | pageNum | Auto‑Loading hat eine Seite erreicht. |
onThumbsShown | none | Das Miniatur‑Panel wurde sichtbar. |
onAnnLoaded | none | Annotationsdaten geladen. |
onAnnSaved | none | Annotationsdaten gespeichert. |
onAnnSaveError | none | Speichern der Annotation fehlgeschlagen. |
onAnnClosed | none | Annotations‑UI geschlossen. |
Halten Sie Rückruffunktionen schnell; senden Sie Telemetrie asynchron und blockieren Sie das Rendern der Seite nicht.
Jede dieser ist eine Option im Initialisierungsobjekt. Der vorherige Viewer suchte globale Funktionen, deren Namen er aus der Container‑ID ableitete — eine Seite mit <div id="div_ctlDoc"> musste nur function ctlDoc_OnViewerReady() deklarieren. Diese Suche ist weg. Übergeben Sie die Funktion explizit:
objctlDoc = $('#div_ctlDoc').docViewer({
// ... Ihre bestehenden Optionen ...
onViewerBusy: ctlDoc_OnViewerBusy, // wurde nach Namen gefunden
onViewerReady: ctlDoc_OnViewerReady, // wurde nach Namen gefunden
onCopy: ctlDoc_Copy, // war ctlDoc_Copy(text)
onAutoLoadStatus: ctlDoc_AutoLoadStatus // war ctlDoc_AutoLoadStatus(page)
});Die alte Suche war in ein leeres catch eingeschlossen, sodass nie etwas gemeldet wurde. In dieser Version werden die Funktionen einfach nie ausgeführt: Das typische Symptom ist ein beschäftigter Spinner, der nie stoppt, weil der Handler, der ihn ausblendet, onViewerReady war. Das dahinterliegende Dokument wird korrekt gerendert.
Es gibt keinen Rückruf für Link‑Klicks — die Hyperlink‑Verarbeitung ist integriert und wird durch showHyperlinks gesteuert.
Öffentliche Methodengruppen
| Gruppe | Gemeinsame Methoden |
|---|---|
| Lebenszyklus | View(token, accessToken?), Close(server?), Token(), Init(), IsLoaded() |
| Navigation | GotoPage(page), ShowPage(page, focus?), Next(next), CurrentPage(), TotalPages() |
| Zoom und Anpassen | Zoom(zoomIn), CurrentZoom(), FitType(value), Refit() |
| Ausrichtung | Rotate(page, angle), Flip(page, flipType) |
| Miniaturansichten | HideThumbs(hide), ThumbSize(size), ReloadThumbs(width), ScrollToThumb(thumb) |
| Suche | CanSearch(), Search(...), SearchMatchCount(), SearchSummary(...), GotoSearchMatch(...) |
| Annotation | SaveAnnotations(), GetAnnotations(), PushAnnotations(...), CloseAnnotations(...), ShowAnnotations(...) |
| Kopieren | Copy(...), CopyPage(pageNumber), CopyMode(enabled) |
Die JavaScript‑Datei enthält ebenfalls interne Hilfsfunktionen. Behandle nur Methoden, die von der Referenz‑UI verwendet und hier oder in den Feature‑Guides dokumentiert sind, als stabile Integrationspunkte.
Wiederholen, während eine verteilte Seite noch gerendert wird
retryOn409 behält seinen historischen Namen bei. Es dient der asynchronen Seitenerzeugung und wiederholt die aktuelle 202 Accepted‑Bereitschaftsantwort sowie das ältere 409 Conflict‑Signal. Wenn aktiviert, fragt das Widget mit diesen JavaScript‑Standardwerten ab:
| Option | Standard |
|---|---|
retryInitialDelayMs | 250 |
retryBackoffFactor | 1.6 |
retryMaxDelayMs | 2500 |
retryMaxAttempts | 60 |
retryMaxTotalMs | 120000 |
Lassen Sie es für den normalen Einzelknoten‑Viewer deaktiviert. Das Aktivieren kann ein nicht unterstütztes synchrones Rendering nicht in ein asynchrones verwandeln.
Aktivieren Sie es, wenn Seiten aus gemeinsam genutztem Speicher mit FirstPagePriority bereitgestellt werden, wobei spätere Seiten legitimerweise 202 Accepted zurückgeben, bis sie geschrieben sind. Ein Client, der nicht wiederholt, zeigt fehlerhafte Kacheln für noch rendernde Seiten — siehe Verteilte Bereitstellungen.
Pfad‑Checkliste
DoconutOptions.MiddlewarePathmuss den Zweig beschreiben, den Sie tatsächlich zuordnen.BasePathmuss diesen Zweig anvisieren, geschrieben ohne führenden/('doconut', nicht'/doconut': Der Viewer fügt den Schrägstrich hinzu, und//doconut/...ist eine Anfrage an einen anderen Host). Die Referenzanwendung bewahrt die historischeDocImage.axd‑Anfrageform auf einemMapWhen‑Zweig und setzt daherBasePath: '/'.DoconutOptions.ResourcesPathist die Route für eingebettete Ressourcen.ResPathzielt normalerweise auf den Unterordnerimagesab, ohne führenden/—'doconut-res/images'mit dem Standard‑Präfix. Ein leererResPathwar in der vorherigen Bibliothek korrekt, wo Ressourcen vom Anwendungs‑Root kamen; hier ist er nicht korrekt und führt ohne Fehlermeldung zum Scheitern.ExtractHyperlinksmuss in der Server‑Format‑Konfiguration aktiviert sein, bevorshowHyperlinksirgendetwas anzeigen kann.
War diese Seite hilfreich?