ViewerConfig
Opções do widget visualizador do cliente
ViewerConfig (namespace Doconut) descreve a aparência e o comportamento do visualizador no navegador. Não afeta a qualidade de renderização do documento; use uma configuração de formato para isso. A classe C# e o widget JavaScript de longa data têm padrões diferentes, portanto mapeie os valores explicitamente.
Duas alterações do lado do cliente nesta versão falham silenciosamente. As funções manipuladoras são passadas como opções — o widget não deriva mais nomes de funções globais a partir do ID do contêiner — e
ResPathdeve apontar para o prefixo de recursos em vez da raiz da aplicação. Ambas deixam o servidor funcionando perfeitamente e não relatam nada no console do navegador. Se você está migrando uma página da biblioteca anterior, leia Retornos de chamada e Lista de verificação de caminho antes de qualquer outra coisa.
Propriedades C#
| Tipo | Propriedade | Padrão | Descrição |
|---|---|---|---|
bool | ShowThumbs | true | Exibir o painel de miniaturas. |
bool | AutoLoad | false | Carregar automaticamente após a inicialização. O fluxo normal de token chama View(token) explicitamente. |
bool | AutoFocus | true | Mover o foco/rolagem do navegador para o visualizador durante a inicialização. |
bool | AutoPageFocus | true | Manter a miniatura atual visível enquanto as páginas mudam. |
int | PageZoom | 100 | Percentual de zoom inicial. |
int | ZoomStep | 10 | Percentual adicionado ou removido pelos comandos de zoom. |
int | MaxZoom | 300 | Percentual máximo de zoom. |
bool | ShowToolTip | true | Exibir a dica de posição da página enquanto rola. |
string | ToolTipPageText | "Page " | Prefixo usado na dica da página. |
bool | CacheEnabled | false | Manter uma janela móvel de imagens de página na memória do navegador. Não usa localStorage. |
bool | LargeDoc | false | Anexar elementos de página em lotes cronometrados para documentos grandes. |
bool | ShowHyperlinks | false | Renderizar sobreposições de hiperlinks quando a configuração do servidor os extraiu. |
bool | FixedZoom | true | Usar um percentual de zoom fixo em vez de recalcular responsivamente. |
int | FixedZoomPercent | 100 | Zoom fixo para desktop. |
int | FixedZoomPercentMobile | 75 | Zoom fixo para dispositivos móveis. |
string | BasePath | "/" | Ramo onde o host mapeia UseDoconut(). |
string | ResPath | "doconut-res" | Base de recursos usada pelo widget. Em uma configuração normal aponte para <ResourcesPath>/images. |
string | FitType | "width" | "width", "height" ou vazio para nenhum ajuste automático. "page" não é aceito pelo widget atual. |
bool | RetryOn409 | false | Habilitar polling quando a produção de página assíncrona/distribuída responde 202 Accepted; 409 também é aceito por compatibilidade com servidores antigos. Não necessário para o visualizador síncrono normal. |
var config = new ViewerConfig
{
ShowThumbs = true,
AutoLoad = false,
PageZoom = 100,
MaxZoom = 300,
FitType = "width",
BasePath = "/doconut",
ResPath = "/doconut-res/images",
ShowHyperlinks = true
};Mapeamento C# → JavaScript
Não passe um ViewerConfig serializado diretamente para docViewer(...). A maioria das chaves do widget usa camelCase, enquanto três chaves estabelecidas de caminho/ajuste usam 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 |
Padrões JavaScript
O widget possui padrões mais antigos que diferem da classe C#. Os valores a seguir vêm da implementação atual de docViewer.js.
| Opção | Padrão | Observações |
|---|---|---|
leftMinWidth / leftMaxWidth | 220 / 800 | Limites de largura do painel de miniaturas. |
showThumbs | true | Visibilidade inicial das miniaturas. |
autoFocus / autoPageFocus | true / false | autoPageFocus difere do padrão C#. |
thumbWidth / thumbHeight / thumbPadding | 150 / 200 / 10 | Geometria das miniaturas em pixels. |
pageZoom / zoomStep / maxZoom | 100 / 10 / 200 | maxZoom JavaScript difere do C# (300). |
showToolTip / toolTipPageText | true / "Page " | Dica de posição da página. |
format / doc / AccessToken | "" / 0 / "" | Valores internos de inicialização; normalmente preenchidos por View(token). |
debugMode | false | Diagnósticos adicionais do cliente. |
FitType | "" | Nenhum ajuste automático a menos que seja fornecido. |
BasePath | "DocImage.axd" | Padrão histórico do cliente mantido por compatibilidade. Hosts ASP.NET Core atuais devem defini‑lo explicitamente para o ramo de middleware mapeado. |
ResPath | "" | Definir explicitamente para o caminho de imagens incorporadas. |
cacheEnabled / cacheCount / cacheDelay | false / 3 / 3 | Janela de pré‑carregamento de páginas em memória e atraso. |
autoLoad | false | Recomenda‑se fluxo de token explícito. |
largeDoc | true | Difere do padrão C#. |
fixedZoom | false | Difere do padrão C#. |
fixedZoomPercent / fixedZoomPercentMobile | 100 / 50 | Valor móvel difere do C# (75). |
showHyperlinks | true | Requer extração no servidor para produzir sobreposições. |
Defina todos os valores importantes ao invés de confiar em qualquer conjunto de padrões:
<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 chamada
| Retorno de chamada | Argumentos | Propósito |
|---|---|---|
onPageLoading | pageNum | Uma solicitação de página está iniciando. |
onPageLoaded | pageNum | A imagem da página terminou de carregar. |
onThumbnailClicked | pageNum | O usuário selecionou uma miniatura. |
onPageClicked | pageNum | O usuário selecionou uma página. |
onDoubleClick | none | O visualizador recebeu um duplo clique. |
onViewerBusy | none | O visualizador entrou em estado ocupado. |
onViewerReady | none | Inicialização concluída. |
onViewerError | none | O visualizador entrou em estado de erro. |
onError | message | Uma operação retornou uma mensagem de erro. |
onCopy | data | Dados de cópia de texto estão disponíveis. |
onAutoLoadStatus | pageNum | Auto‑carregamento avançou para uma página. |
onThumbsShown | none | O painel de miniaturas tornou‑se visível. |
onAnnLoaded | none | Dados de anotação carregados. |
onAnnSaved | none | Dados de anotação salvos. |
onAnnSaveError | none | Falha ao salvar anotação. |
onAnnClosed | none | Interface de anotação fechada. |
Mantenha os callbacks rápidos; envie telemetria de forma assíncrona e não bloqueie a renderização da página.
Cada um desses é uma opção no objeto de inicialização. O visualizador anterior procurava
funções globais cujos nomes eram derivados do ID do contêiner — uma página com
<div id="div_ctlDoc"> precisava declarar function ctlDoc_OnViewerReady(). Essa procura
foi removida. Passe a função explicitamente:
objctlDoc = $('#div_ctlDoc').docViewer({
// ... suas opções existentes ...
onViewerBusy: ctlDoc_OnViewerBusy, // antes era encontrado por nome
onViewerReady: ctlDoc_OnViewerReady, // antes era encontrado por nome
onCopy: ctlDoc_Copy, // antes era ctlDoc_Copy(text)
onAutoLoadStatus: ctlDoc_AutoLoadStatus // antes era ctlDoc_AutoLoadStatus(page)
});A antiga procura estava envolvida em um catch vazio, portanto nada jamais foi relatado. Nesta
versão as funções simplesmente nunca são executadas: o sintoma usual é um spinner de carregamento que nunca para, porque o manipulador que o ocultava era onViewerReady. O documento por trás dele está sendo renderizado corretamente.
Não há callback de clique em link — o tratamento de hiperlinks está embutido e controlado por
showHyperlinks.
Grupos de métodos públicos
| Grupo | Métodos comuns |
|---|---|
| Ciclo de vida | View(token, accessToken?), Close(server?), Token(), Init(), IsLoaded() |
| Navegação | GotoPage(page), ShowPage(page, focus?), Next(next), CurrentPage(), TotalPages() |
| Zoom e ajuste | Zoom(zoomIn), CurrentZoom(), FitType(value), Refit() |
| Orientação | Rotate(page, angle), Flip(page, flipType) |
| Miniaturas | HideThumbs(hide), ThumbSize(size), ReloadThumbs(width), ScrollToThumb(thumb) |
| Busca | CanSearch(), Search(...), SearchMatchCount(), SearchSummary(...), GotoSearchMatch(...) |
| Anotação | SaveAnnotations(), GetAnnotations(), PushAnnotations(...), CloseAnnotations(...), ShowAnnotations(...) |
| Cópia | Copy(...), CopyPage(pageNumber), CopyMode(enabled) |
O arquivo JavaScript contém auxiliares internos também. Considere estáveis apenas os métodos usados pela UI de referência e documentados aqui ou nos guias de recursos.
Repetição enquanto uma página distribuída ainda está sendo renderizada
retryOn409 mantém seu nome histórico. É usado para produção de página assíncrona e
tenta novamente a resposta atual 202 Accepted assim como o sinal mais antigo 409 Conflict.
Quando habilitado, o widget faz polling com estes padrões JavaScript:
| Opção | Padrão |
|---|---|
retryInitialDelayMs | 250 |
retryBackoffFactor | 1.6 |
retryMaxDelayMs | 2500 |
retryMaxAttempts | 60 |
retryMaxTotalMs | 120000 |
Deixe desativado para o visualizador normal de nó único. Habilitá‑lo não pode transformar uma renderização síncrona não suportada em assíncrona.
Habilite quando as páginas são servidas a partir de armazenamento compartilhado com FirstPagePriority, onde páginas posteriores legitimamente respondem 202 Accepted até serem gravadas. Um cliente que não repete mostra blocos quebrados para páginas ainda em renderização — veja
Implantações Distribuídas.
Lista de verificação de caminho
DoconutOptions.MiddlewarePathdeve descrever o ramo que você realmente mapeia.BasePathdeve apontar para esse ramo. A aplicação de referência mantém a forma histórica de requisiçãoDocImage.axdem um ramoMapWhene, portanto, defineBasePath: '/'.DoconutOptions.ResourcesPathé a rota de recurso incorporado.ResPathnormalmente aponta para sua subpasta/images—'doconut-res/images'com o prefixo padrão. UmResPathvazio era correto na biblioteca anterior, onde os recursos vinham da raiz da aplicação; não está correto aqui e falha sem gerar erro.ExtractHyperlinksdeve estar habilitado na configuração de formato do servidor antes queshowHyperlinkspossa exibir qualquer coisa.
Esta página foi útil?