Anpassade teman
Styla visaren så att den matchar din app
Visaren levereras med ett neutralt, Bootstrap‑baserat utseende som hämtas från de inbäddade resurserna (viewer.css, samt per‑funktion‑stilmallar som searchBar.css och annotationBar.css). Tematisering sker på tre nivåer — välj den grundläggande som räcker för ditt behov.
Nivå 1 — Konfigurera ramen
Mycket av ”tematiseringen” är egentligen konfiguration:
ViewerConfig.ShowThumbs = false— ingen miniatyrpanel.ViewerConfig.FitType = "height" | "width"— hur sidor fyller visningsområdet.ViewerConfig.ShowThumbs = falsetillsammans med selektivaCssConfig/ScriptConfig‑paket — behåll bara den ram som din värd använder.
Nivå 2 — Överskriv CSS
Viewer.ReferenceCss() genererar enkla <link>‑taggar; allt du laddar efter dem vinner i kaskaden. Storlek och ram för visaren från din egen stilmall:
/* Your stylesheet, loaded after ReferenceCss() */
/* The two containers you own */
#divDocViewer { width: 100%; height: calc(100vh - 48px); }
/* Widget page cards */
.docPage { max-width: none; }Värdsidan styr den yttre layouten helt — widgeten renderas inuti den ruta du ger #divDocViewer / #div_ctlDoc (det standardbehållarparet från Snabbstart).
Två praktiska regler:
- Ladda inte Bootstrap två gånger. Om din app redan levererar Bootstrap, hoppa över
IncludeBootstrapCss/IncludeBootstrapoch låt widgeten ärva din — detta gör att visaren ser inbyggd ut i din app. - Inkludera bara de paket du använder. Varje
CssConfig/ScriptConfig‑flagga är valfri; färre paket, färre stilar att hantera.
Nivå 3 — Bygg ditt eget verktygsfält
För en helt varumärkesanpassad upplevelse styr du widgeten från ditt eget UI — så bygger referensexemplet sitt huvudverktygsfält för Viewer. Det verktygsfältet består av värd‑markup plus en app‑specifik hjälpare; det är inte ett inbäddat SDK‑Ribbon. docViewer‑instansen som returneras vid initiering är ditt API‑gränssnitt, tillsammans med dina egna slutpunkter — här ViewerApi/Open‑åtgärden från Hur visaren fungerar:
<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('/ViewerApi/Open?fileName=Sample.pdf', { method: 'POST' });
const token = await resp.text();
objViewer.View(token);
});
</script>Sök och Anteckning är annorlunda: deras valfria Ribbon‑komponenter är inbäddade i SDK:n (IncludeSearchBar, IncludeAnnotationBar) och genererar sin egen DOM. Du kan använda dem tillsammans med ditt anpassade Viewer‑verktygsfält eller hoppa över dem och anropa widget‑API:erna själv. Se Snabbstart för den kompletta integrationsordningen.
Mörkt läge och RTL
Widgeten levereras inte med ett mörkt tema; en Nivå 2‑överskrivning som riktar sig mot din mörkt‑läge‑klass (t.ex. .dark #divDocViewer { … }) för bakgrunder och kanter täcker de flesta behov, eftersom sidans innehåll själv renderas som bild. För RTL‑värdar fungerar visaren utan problem i en RTL‑layout — håll ditt eget verktygsfält RTL‑medvetet.
Vad du inte bör göra
Forka eller redigera inte de inbäddade stilmallarna: de levereras i paketet och ersätts vid varje uppdatering. Överskrivningar i din egen stilmall överlever uppgraderingar; ändringar i viewer.css gör det inte.
Var den här sidan hjälpsam?