Temi Personalizzati
Stilizza il visualizzatore per adattarlo alla tua app
Il visualizzatore viene fornito con un aspetto neutro, basato su Bootstrap, servito dalle risorse incorporate (viewer.css, più fogli di stile per funzionalità come searchBar.css e annotationBar.css). La tematizzazione avviene a tre livelli — scegli quello più superficiale che ti porta al risultato desiderato.
Livello 1 — Configura la chrome
Molto del "theming" è in realtà configurazione:
ViewerConfig.ShowThumbs = false— nessun pannello miniature.ViewerConfig.FitType = "height" | "width"— come le pagine riempiono la viewport.ViewerConfig.ShowThumbs = falseinsieme a bundle selettiviCssConfig/ScriptConfig— mantieni solo la chrome che il tuo host utilizza.
Livello 2 — Sovrascrivi il CSS
Viewer.ReferenceCss() genera semplici tag <link>; tutto ciò che carichi dopo di essi vince la cascata. Imposta dimensioni e cornice del visualizzatore dal tuo foglio di stile:
/* Your stylesheet, loaded after ReferenceCss() */
/* The two containers you own */
#divDocViewer { width: 100%; height: calc(100vh - 48px); }
/* Widget page cards */
.docPage { max-width: none; }La pagina host controlla completamente il layout esterno — il widget viene renderizzato all'interno di qualsiasi contenitore tu assegni a #divDocViewer / #div_ctlDoc (la coppia di contenitori standard del Quick Start).
Due regole pratiche:
- Non caricare Bootstrap due volte. Se la tua app include già Bootstrap, salta
IncludeBootstrapCss/IncludeBootstrape lascia che il widget erediti il tuo — questo da solo fa apparire il visualizzatore nativo alla tua app. - Includi solo i bundle che usi. Ogni flag
CssConfig/ScriptConfigè opzionale; meno bundle, meno stili da gestire.
Livello 3 — Costruisci la tua barra degli strumenti
Per un'esperienza completamente brandizzata, controlla il widget dalla tua UI — è esattamente così che il campione di riferimento costruisce la sua barra degli strumenti principale del Viewer. Quella barra è markup host più un helper specifico dell'app; non è un Ribbon SDK incorporato. L'istanza docViewer restituita dall'inizializzazione è la tua superficie API, insieme ai tuoi endpoint:
<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>Search e Annotation sono diversi: i loro componenti Ribbon opzionali sono incorporati nell'SDK (IncludeSearchBar, IncludeAnnotationBar) e generano il proprio DOM. Puoi usarli insieme alla tua barra degli strumenti personalizzata del Viewer o saltarli e chiamare direttamente le API del widget sottostante. Vedi il pacchetto completo del Viewer nel Quick Start per l'ordine completo di integrazione.
Modalità scura e RTL
Il widget non fornisce un tema scuro; una sovrascrittura di Livello 2 che mira alla tua classe dark-mode (es. .dark #divDocViewer { … }) su sfondi e bordi copre la maggior parte delle esigenze, poiché il contenuto della pagina è renderizzato come immagine. Per gli host RTL, il visualizzatore funziona perfettamente all'interno di un layout RTL — mantieni la tua barra degli strumenti consapevole dell'RTL.
Cosa non fare
Non fare fork o modificare i fogli di stile incorporati: vengono forniti all'interno del pacchetto e sono sostituiti ad ogni aggiornamento. Le sovrascritture nel tuo foglio di stile sopravvivono agli aggiornamenti; le modifiche a viewer.css no.
Questa pagina è stata utile?