Temas Personalizados
Estilize o visualizador para combinar com seu aplicativo
O visualizador vem com um visual neutro, baseado em Bootstrap, servido a partir dos recursos incorporados (viewer.css, além de folhas de estilo por recurso como searchBar.css e annotationBar.css). A tematização ocorre em três níveis — escolha o mais superficial que lhe atender.
Nível 1 — Configure a interface
Muita da “tematização” é na verdade configuração:
ViewerConfig.ShowThumbs = false— sem painel de miniaturas.ViewerConfig.FitType = "height" | "width"— como as páginas preenchem a área de visualização.ViewerConfig.ShowThumbs = falseem conjunto com pacotes seletivos deCssConfig/ScriptConfig— mantenha apenas a interface que seu host utiliza.
Nível 2 — Substituir o CSS
Viewer.ReferenceCss() gera tags <link> simples; tudo que você carregar depois delas vence a cascata. Defina tamanho e enquadramento do visualizador a partir da sua própria folha de estilos:
/* Your stylesheet, loaded after ReferenceCss() */
/* The two containers you own */
#divDocViewer { width: 100%; height: calc(100vh - 48px); }
/* Widget page cards */
.docPage { max-width: none; }A página host controla totalmente o layout externo — o widget renderiza dentro de qualquer caixa que você fornecer a #divDocViewer / #div_ctlDoc (o par de contêineres padrão do Quick Start).
Duas regras práticas:
- Não carregue o Bootstrap duas vezes. Se seu aplicativo já inclui Bootstrap, ignore
IncludeBootstrapCss/IncludeBootstrape deixe o widget herdar o seu — isso por si só faz o visualizador parecer nativo ao seu aplicativo. - Inclua apenas os pacotes que você usa. Cada sinalizador
CssConfig/ScriptConfigé opcional; menos pacotes, menos estilos para lidar.
Nível 3 — Crie sua própria barra de ferramentas
Para uma experiência totalmente personalizada, controle o widget a partir da sua própria UI — isso é exatamente como o exemplo de referência constrói sua barra de ferramentas principal do Visualizador. Essa barra de ferramentas é a marcação do host mais um auxiliar específico do aplicativo; não é uma Ribbon SDK incorporada. A instância docViewer retornada pela inicialização é a sua superfície de API, junto com seus próprios endpoints:
<div id="toolbar">
<button id="btnOpen">Open</button>
<button id="btnPrev">‹</button>
<button id="btnNext">›</button>
<!-- your design system, your icons -->
</div>
<div id="divDocViewer"><div id="div_ctlDoc"></div></div>
<script>
const objViewer = $('#div_ctlDoc').docViewer({
showThumbs: true,
autoLoad: false,
BasePath: '/',
ResPath: 'doconut-res/images',
onViewerReady: () => { /* enable your buttons */ },
onError: (msg) => console.error('DocViewer:', msg)
});
document.getElementById('btnOpen').addEventListener('click', async () => {
const resp = await fetch('/api/open?fileName=Sample.pdf', { method: 'POST' });
const token = await resp.text();
objViewer.View(token);
});
</script>Busca e Anotação são diferentes: seus componentes Ribbon opcionais estão incorporados no SDK (IncludeSearchBar, IncludeAnnotationBar) e geram seu próprio DOM. Você pode usá‑los junto com sua barra de ferramentas personalizada do Visualizador ou ignorá‑los e chamar as APIs subjacentes do widget diretamente. Consulte o pacote completo do Visualizador no Quick Start para a ordem completa de integração.
Modo escuro e RTL
O widget não inclui um tema escuro; uma substituição de Nível 2 que atinge sua classe de modo escuro (ex.: .dark #divDocViewer { … }) em fundos e bordas cobre a maioria das necessidades, já que o conteúdo da página é renderizado como imagens. Para hosts RTL, o visualizador funciona perfeitamente dentro de um layout RTL — mantenha sua própria barra de ferramentas consciente de RTL.
O que não fazer
Não faça fork nem edite as folhas de estilo incorporadas: elas são distribuídas dentro do pacote e são substituídas a cada atualização. Substituições na sua própria folha de estilos sobrevivem às atualizações; edições em viewer.css não.
Esta página foi útil?