ViewerConfig

Opciones del widget de visualización del cliente

ViewerConfig (namespace Doconut) describe la apariencia y el comportamiento del visor del navegador. No afecta la calidad de renderizado del documento; use una configuración de formato para eso. La clase C# y el widget JavaScript de larga data tienen valores predeterminados diferentes, por lo que debe mapear los valores explícitamente.

Dos cambios del lado del cliente en esta versión fallan silenciosamente. Las funciones manejadoras se pasan como opciones — el widget ya no deriva nombres de funciones globales del id del contenedor — y ResPath debe apuntar al prefijo de recursos en lugar de la raíz de la aplicación. Ambos dejan el servidor funcionando perfectamente y no informan nada en la consola del navegador. Si está trasladando una página desde la biblioteca anterior, lea Funciones de devolución de llamada y Lista de verificación de rutas antes de cualquier otra cosa.

Propiedades C#

TipoPropiedadPredeterminadoDescripción
boolShowThumbstrueMostrar el panel de miniaturas.
boolAutoLoadfalseCargar automáticamente después de la inicialización. El flujo normal de tokens llama a View(token) explícitamente.
boolAutoFocustrueMover el foco/desplazamiento del navegador al visor durante la inicialización.
boolAutoPageFocustrueMantener la miniatura actual visible mientras cambian las páginas.
intPageZoom100Porcentaje de zoom inicial.
intZoomStep10Porcentaje añadido o eliminado por los comandos de zoom.
intMaxZoom300Porcentaje máximo de zoom.
boolShowToolTiptrueMostrar la información sobre posición de página mientras se desplaza.
stringToolTipPageText"Page "Prefijo usado en la información sobre la página.
boolCacheEnabledfalseMantener una ventana móvil de imágenes de página en la memoria del navegador. No utiliza localStorage.
boolLargeDocfalseAgregar elementos de página en lotes cronometrados para documentos grandes.
boolShowHyperlinksfalseRenderizar superposiciones de hipervínculos cuando la configuración del servidor los extrae.
boolFixedZoomtrueUsar un porcentaje de zoom fijo en lugar de un recálculo responsivo.
intFixedZoomPercent100Zoom fijo para escritorio.
intFixedZoomPercentMobile75Zoom fijo para móvil.
stringBasePath"/"Dónde el visor envía las solicitudes de página. "/" es DocImage.axd en la raíz del sitio; de lo contrario, la rama donde el host asigna UseDoconut(), sin una / inicial ("doconut" significa /doconut/DocImage.axd).
stringResPath"doconut-res/images" (26.9.0; "doconut-res" antes)Carpeta de la que el widget carga sus propias imágenes: la carpeta images bajo ResourcesPath, sin una / inicial.
stringFitType"width""width", "height", o vacío para sin ajuste automático. "page" no es aceptado por el widget actual.
boolRetryOn409falseHabilitar sondeo cuando la producción de página asíncrona/distribuida responde 202 Accepted; 409 también es aceptado para compatibilidad con servidores más antiguos. No es necesario para el visor sincrónico normal.
csharp
var config = new ViewerConfig
{
    ShowThumbs = true,
    AutoLoad = false,
    PageZoom = 100,
    MaxZoom = 300,
    FitType = "width",
    BasePath = "doconut",           // sin '/' inicial: el visor lo agrega ("/doconut" se convertiría en //doconut, otro host)
    ResPath = "doconut-res/images",
    ShowHyperlinks = true
};

Mapeo de C# a JavaScript

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

Valores predeterminados de JavaScript

El widget tiene valores predeterminados más antiguos que difieren de la clase C#. Los siguientes valores provienen de la implementación actual de docViewer.js.

OpciónPredeterminadoNotas
leftMinWidth / leftMaxWidth220 / 800Límites de ancho del panel de miniaturas.
showThumbstrueVisibilidad inicial de miniaturas.
autoFocus / autoPageFocustrue / falseautoPageFocus difiere del valor predeterminado de C#.
thumbWidth / thumbHeight / thumbPadding150 / 200 / 10Geometría de la miniatura en píxeles.
pageZoom / zoomStep / maxZoom100 / 10 / 200maxZoom de JavaScript difiere de C# (300).
showToolTip / toolTipPageTexttrue / "Page "Información sobre posición de página.
format / doc / AccessToken"" / 0 / ""Valores internos de inicialización; normalmente se rellenan mediante View(token).
debugModefalseDiagnósticos adicionales del cliente.
FitType""No hay ajuste automático a menos que se proporcione.
BasePath"DocImage.axd"Valor predeterminado histórico del cliente mantenido por compatibilidad. Los hosts actuales de ASP.NET Core deben establecerlo explícitamente en la rama del middleware asignado.
ResPath""Establecer explícitamente la ruta de imágenes incrustadas.
cacheEnabled / cacheCount / cacheDelayfalse / 3 / 3Ventana y retraso de precarga de páginas en memoria.
autoLoadfalseSe recomienda el flujo de token explícito.
largeDoctrueDifiere del valor predeterminado de C#.
fixedZoomfalseDifiere del valor predeterminado de C#.
fixedZoomPercent / fixedZoomPercentMobile100 / 50El valor móvil difiere de C# (75).
showHyperlinkstrueRequiere extracción del lado del servidor para producir superposiciones.

Establezca todos los valores importantes de comportamiento en lugar de confiar en cualquiera de los conjuntos de valores predeterminados:

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>

Retornos de llamada

Retorno de llamadaArgumentosPropósito
onPageLoadingpageNumSe está iniciando una solicitud de página.
onPageLoadedpageNumUna imagen de página ha terminado de cargarse.
onThumbnailClickedpageNumEl usuario seleccionó una miniatura.
onPageClickedpageNumEl usuario seleccionó una página.
onDoubleClickningunoEl visor recibió un doble clic.
onViewerBusyningunoEl visor entró en estado ocupado.
onViewerReadyningunoLa inicialización se completó.
onViewerErrorningunoEl visor entró en su estado de error.
onErrormessageUna operación devolvió un mensaje de error.
onCopydataLos datos de copia de texto están disponibles.
onAutoLoadStatuspageNumLa carga automática avanzó a una página.
onThumbsShownningunoEl panel de miniaturas se volvió visible.
onAnnLoadedningunoLos datos de anotación se cargaron.
onAnnSavedningunoLos datos de anotación se guardaron.
onAnnSaveErrorningunoLa guardado de anotación falló.
onAnnClosedningunoLa interfaz de anotación se cerró.

Mantenga los retornos de llamada rápidos; envíe telemetría de forma asíncrona y no bloquee el renderizado de la página.

Cada uno de estos es una opción en el objeto de inicialización. El visor anterior buscaba funciones globales cuyos nombres derivaba del id del contenedor — una página con <div id="div_ctlDoc"> solo tenía que declarar function ctlDoc_OnViewerReady(). Esa búsqueda desapareció. Pase la función explícitamente:

javascript
objctlDoc = $('#div_ctlDoc').docViewer({
    // ... sus opciones existentes ...
    onViewerBusy:     ctlDoc_OnViewerBusy,      // se encontraba por nombre
    onViewerReady:    ctlDoc_OnViewerReady,     // se encontraba por nombre
    onCopy:           ctlDoc_Copy,              // era ctlDoc_Copy(text)
    onAutoLoadStatus: ctlDoc_AutoLoadStatus     // era ctlDoc_AutoLoadStatus(page)
});

La búsqueda antigua estaba envuelta en un catch vacío, por lo que nunca se informó nada. En esta versión las funciones simplemente nunca se ejecutan: el síntoma habitual es un indicador de carga que nunca se detiene, porque el controlador que lo ocultaba era onViewerReady. El documento detrás de él se está renderizando correctamente.

No existe un retorno de llamada para clic en enlaces — el manejo de hipervínculos está incorporado y controlado por showHyperlinks.

Grupos de métodos públicos

GrupoMétodos comunes
Ciclo de vidaView(token, accessToken?), Close(server?), Token(), Init(), IsLoaded()
NavegaciónGotoPage(page), ShowPage(page, focus?), Next(next), CurrentPage(), TotalPages()
Zoom y ajusteZoom(zoomIn), CurrentZoom(), FitType(value), Refit()
OrientaciónRotate(page, angle), Flip(page, flipType)
MiniaturasHideThumbs(hide), ThumbSize(size), ReloadThumbs(width), ScrollToThumb(thumb)
BúsquedaCanSearch(), Search(...), SearchMatchCount(), SearchSummary(...), GotoSearchMatch(...)
AnotaciónSaveAnnotations(), GetAnnotations(), PushAnnotations(...), CloseAnnotations(...), ShowAnnotations(...)
CopiaCopy(...), CopyPage(pageNumber), CopyMode(enabled)

El archivo JavaScript también contiene ayudantes internos. Trate solo los métodos usados por la UI de referencia y documentados aquí o en las guías de características como puntos de integración estables.

Reintentar mientras una página distribuida aún se está renderizando

retryOn409 conserva su nombre histórico. Sirve para la producción asíncrona de páginas y vuelve a intentar la respuesta de disponibilidad 202 Accepted así como la señal anterior 409 Conflict. Cuando está habilitado, el widget realiza sondeos con estos valores predeterminados de JavaScript:

OpciónPredeterminado
retryInitialDelayMs250
retryBackoffFactor1.6
retryMaxDelayMs2500
retryMaxAttempts60
retryMaxTotalMs120000

Déjelo desactivado para el visor de nodo único normal. Activarlo no puede convertir una renderización sincrónica no compatible en asíncrona.

Habilítelo cuando las páginas se sirvan desde almacenamiento compartido con FirstPagePriority, donde las páginas posteriores responden legítimamente 202 Accepted hasta que se escriben. Un cliente que no reintente muestra mosaicos rotos para las páginas que aún se están renderizando — vea Despliegues Distribuidos.

Lista de verificación de rutas

  • DoconutOptions.MiddlewarePath debe describir la rama que realmente mapea.
  • BasePath debe apuntar a esa rama, escrita sin una barra inicial / ('doconut', no '/doconut': el visor agrega la barra, y //doconut/... es una solicitud a otro host). La aplicación de referencia mantiene la forma histórica de solicitud DocImage.axd en una rama MapWhen y por eso establece BasePath: '/'.
  • DoconutOptions.ResourcesPath es la ruta del recurso incrustado.
  • ResPath normalmente apunta a su subcarpeta images, sin una barra inicial — 'doconut-res/images' con el prefijo predeterminado. Un ResPath vacío era correcto en la biblioteca anterior, donde los recursos provenían de la raíz de la aplicación; no es correcto aquí y falla sin generar un error.
  • ExtractHyperlinks debe estar habilitado en la configuración del formato del servidor antes de que showHyperlinks pueda mostrar algo.

¿Fue útil esta página?