ViewerConfig
Opções do widget visualizador do cliente
ViewerConfig (namespace Doconut) descreve a aparência e o comportamento do visualizador do 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 no lado do cliente nesta versão falham silenciosamente. Funções de manipulador 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 reportam nada no console do navegador. Se você está avançando uma página da biblioteca anterior, leia Callbacks e Checklist de caminho antes de qualquer outra coisa.
Propriedades C#
| Tipo | Propriedade | Padrão | Descrição |
|---|---|---|---|
bool | ShowThumbs | true | Mostrar o painel de miniaturas. |
bool | AutoLoad | false | Carregar automaticamente após a inicialização. O fluxo normal de tokens 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 | Porcentagem de zoom inicial. |
int | ZoomStep | 10 | Porcentagem adicionada ou removida pelos comandos de zoom. |
int | MaxZoom | 300 | Porcentagem máxima de zoom. |
bool | ShowToolTip | true | Mostrar 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 hiperlink quando a configuração do servidor as extraiu. |
bool | FixedZoom | true | Usar uma porcentagem de zoom fixa em vez de recalculação responsiva. |
int | FixedZoomPercent | 100 | Zoom fixo para desktop. |
int | FixedZoomPercentMobile | 75 | Zoom fixo para mobile. |
string | BasePath | "/" | Onde o visualizador envia solicitações de página. "/" está DocImage.axd na raiz do site; caso contrário, o ramo onde o host mapeia UseDoconut(), sem um / inicial ("doconut" significa /doconut/DocImage.axd). |
string | ResPath | "doconut-res/images" (26.9.0; "doconut-res" antes) | Pasta de onde o widget carrega suas próprias imagens: a pasta images sob ResourcesPath, sem um / inicial. |
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 para compatibilidade com servidores mais 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", // sem '/' inicial: o visualizador adiciona isso ("/doconut" se tornaria //doconut, outro host)
ResPath = "doconut-res/images",
ShowHyperlinks = true
};Mapeamento de C# para JavaScript
Não passe um ViewerConfig serializado diretamente para docViewer(...). A maioria das chaves do widget são camelCase, enquanto três chaves estabelecidas de caminho/ajuste são 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 do JavaScript
O widget tem padrões mais antigos que diferem da classe C#. Os valores a seguir provêm da implementação atual docViewer.js.
| Opção | Padrão | Observações |
|---|---|---|
leftMinWidth / leftMaxWidth | 220 / 800 | Limites da largura do painel de miniaturas. |
showThumbs | true | Visibilidade inicial da miniatura. |
autoFocus / autoPageFocus | true / false | autoPageFocus difere do padrão C#. |
thumbWidth / thumbHeight / thumbPadding | 150 / 200 / 10 | Geometria da miniatura em pixels. |
pageZoom / zoomStep / maxZoom | 100 / 10 / 200 | JavaScript maxZoom difere de 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 fornecido. |
BasePath | "DocImage.axd" | Padrão histórico do cliente mantido por compatibilidade. Hosts atuais do ASP.NET Core devem defini-lo explicitamente para o ramo de middleware mapeado. |
ResPath | "" | Definido explicitamente para o caminho das imagens incorporadas. |
cacheEnabled / cacheCount / cacheDelay | false / 3 / 3 | Janela e atraso de pré‑carregamento de página em memória. |
autoLoad | false | Fluxo de token explícito é recomendado. |
largeDoc | true | Difere do padrão C#. |
fixedZoom | false | Difere do padrão C#. |
fixedZoomPercent / fixedZoomPercentMobile | 100 / 50 | Valor móvel difere de C# (75). |
showHyperlinks | true | Requer extração no lado do servidor para produzir sobreposições. |
Defina todos os valores importantes de comportamento em vez 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á começando. |
onPageLoaded | pageNum | Uma imagem de 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 | Carregamento automático 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 destes é uma opção no objeto de inicialização. O visualizador anterior buscava funções globais cujos nomes eram derivados do id do contêiner — uma página com <div id="div_ctlDoc"> só precisava declarar function ctlDoc_OnViewerReady(). Essa busca desapareceu. Passe a função explicitamente:
objctlDoc = $('#div_ctlDoc').docViewer({
// ... suas opções existentes ...
onViewerBusy: ctlDoc_OnViewerBusy, // foi encontrado por nome
onViewerReady: ctlDoc_OnViewerReady, // foi encontrado por nome
onCopy: ctlDoc_Copy, // foi ctlDoc_Copy(text)
onAutoLoadStatus: ctlDoc_AutoLoadStatus // foi ctlDoc_AutoLoadStatus(page)
});A busca antiga estava encapsulada em um catch vazio, portanto nada 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á incorporado 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(...) |
| Copiar | Copy(...), CopyPage(pageNumber), CopyMode(enabled) |
O arquivo JavaScript também contém auxiliares internos. Considere apenas os métodos usados pela interface de referência e documentados aqui ou nos guias de recursos como pontos de integração estáveis.
Repetir enquanto uma página distribuída ainda está renderizando
retryOn409 mantém seu nome histórico. Ele serve para produção assíncrona de páginas e repete a resposta de prontidão atual 202 Accepted assim como o sinal mais antigo 409 Conflict. Quando ativado, o widget faz sondagens com esses padrões JavaScript:
| Opção | Padrão |
|---|---|
retryInitialDelayMs | 250 |
retryBackoffFactor | 1.6 |
retryMaxDelayMs | 2500 |
retryMaxAttempts | 60 |
retryMaxTotalMs | 120000 |
Deixe-o desativado para o visualizador de nó único padrão. Ativá-lo não pode tornar uma renderização síncrona não suportada assíncrona.
Ative-o quando as páginas são servidas a partir de armazenamento compartilhado com FirstPagePriority, onde páginas posteriores respondem legitimamente 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, escrito sem um/inicial ('doconut', não'/doconut': o visualizador adiciona a barra, e//doconut/...é uma solicitação para outro host). O aplicativo de referência mantém a forma histórica de solicitaçãoDocImage.axdem um ramoMapWhene, portanto, defineBasePath: '/'.DoconutOptions.ResourcesPathé a rota de recurso incorporado.ResPathnormalmente aponta para sua subpastaimages, sem um/inicial —'doconut-res/images'com o prefixo padrão. UmResPathvazio era correto na biblioteca anterior, onde os recursos vinham da raiz da aplicação; aqui não está correto, e falha sem gerar erro.ExtractHyperlinksdeve ser ativado na configuração de formato do servidor antes queshowHyperlinkspossa exibir qualquer coisa.
Esta página foi útil?