Sök
Inbyggd textsökning i Viewer-sammansättningen
Doconut Viewer erbjuder normal Search med hjälp av text som extraheras av formatvisaren eller en textbaserad PDF‑omdirigering. Den kräver Search‑licenskapacitet.
Aktivera sök‑UI
Search är en Viewer‑modul, inte ett fristående verktygsfält. Den kompletta sidan måste inkludera Viewer‑resurserna, Viewer‑verktygsfältet, Viewer‑mounten och den initierade objViewer; Search‑Ribbon monteras sedan och fästs på samma instans.
Search och annotering är inbyggda licensierade funktioner, inte AddPlugin<T>()‑paket. Begär sökresurserna från den injicerade Viewer; deras taggar sänds endast när licensen beviljar Search.
@Html.Raw(Viewer.ReferenceCss(new CssConfig
{
IncludeViewerCss = true,
IncludeSearchCss = true
}))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig
{
IncludeJQuery = true,
IncludeViewerScripts = true,
IncludeSearchScripts = true,
IncludeSearchBar = true
}))Den inbäddade Ribbon anropar samma JavaScript‑metoder som är tillgängliga för ett anpassat UI.
Behåll den kompletta Viewer‑sammansättningen synlig i markupen, initiera docViewer först och fäst sedan den licensierade Ribbon:
<nav id="toolbar" aria-label="Document viewer controls">
<!-- Viewer‑kontroller, inklusive knappen som öppnar Search -->
</nav>
<div id="searchBarMount"></div>
<div id="divDocViewer"><div id="div_ctlDoc"></div></div>
<script>
let searchBar = null;
let currentToken = '';
const objViewer = $('#div_ctlDoc').docViewer({
BasePath: '/doconut',
ResPath: '/doconut-res/images'
});
@if (Viewer.IsSearchEnabled)
{
<text>
searchBar = $('#searchBarMount').doconutSearchBar({
docId: 'ctlDoc',
getRequestParams: () => ({ token: currentToken }),
onStatus: (message) => console.log(message),
onToast: (message, type) => console.log(type, message),
onLayout: () => requestAnimationFrame(() => objViewer.Refit())
});
searchBar.attach(objViewer);
</text>
}
</script>Komponenten injicerar grupperna Find, Options och Results och hanterar sökning, rensning, matchningsantal och navigering till föregående/nästa matchning. Ett host‑ägda Viewer‑verktygsfält behöver bara växla den:
searchBar.isOpen() ? searchBar.close() : searchBar.open();Dess offentliga API är avsiktligt litet:
| Metod | Syfte |
|---|---|
attach(objViewer) | Ansluter Ribbon till den initierade visaren; krävs en gång |
open() / close() | Visar eller döljer Ribbon; stängning rensar även markeringar |
reset() | Rensar aktuellt sökord, resultatantal och markeringar |
isOpen() | Anger om Ribbon är synlig |
setStatus(message) | Skickar ett statusmeddelande vidare via den konfigurerade callback‑funktionen |
Den valfria onToggle(isOpen)‑callbacken låter hosten synkronisera sin Search‑knapp, och onLayout låter den ändra storlek/återanpassa visaren när Ribbon ändrar höjd. För den kombinerade Viewer‑, Search‑ och Annotation‑startsekvensen, se Snabbstart.
Sök från JavaScript
objViewer.Search(keyword, false, function (resultCount) {
console.log('Matches:', resultCount);
});Det andra argumentet betyder helord‑/exakt matchning. Efter callbacken:
| Metod | Resultat |
|---|---|
SearchMatchCount() | Totalt antal individuella träffar i dokumentet. |
SearchSummary(false) | [pageNumber, matchCount]‑poster utan ommålning. |
SearchSummary(true) | Samma sammanfattning men målar upp sid‑/miniatyrmarkeringar. |
GotoSearchMatch(index) | Navigerar till ett nollbaserat matchningsindex. |
Mellanlagrets rutt använder search=<term> och exact=true|false och returnerar XML. Använd widget‑API:t istället för att själv tolka det interna svaret.
Kontrollera sökkapacitet
Initieringssvaret rapporterar:
X-Doconut-Can-Search: 1Efter initiering exponerar objViewer.CanSearch() samma format‑/sessionsverdict. Den returnerar false när servern skickar 0; före svaret, eller med en äldre server som utelämnar headern, är standardvärdet true.
Tre oberoende grindar får inte förväxlas:
| Grind | Fråga |
|---|---|
CanSearch() / response header | Har den lösta visaren ett inbyggt index/sökväg? |
AllowSearch | Begärde detta formatkonfigurationsalternativ textutdragning där växeln finns? |
LicenseCapability.Search | Är applikationen auktoriserad att utföra sökningar och ta emot UI‑paketen? |
Ett format kan vara tekniskt sökbart medan den aktuella licensen nekar operationen.
Aktivera extraktion per format
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
AllowSearch = true,
AllowCopy = true // optional: lets the user drag a region and copy its text
});AllowSearch och AllowCopy finns på PdfConfig, WordConfig, ExcelConfig och PptConfig. Office‑egenskaperna delegaterar till deras inbäddade PdfConfig. Båda har standardvärdet false.
Normala inbyggda sök‑adaptrar finns för PDF, Word, Excel, PowerPoint, TXT, Visio, e‑post, EPUB och MHT. XPS använder sin PDF‑väg som standard. HTML och Microsoft Project drar nytta av en textbaserad PDF‑omdirigering:
// DefaultRender = false → converted to a text-based PDF → searchable
var token = await viewer.OpenDocumentAsync(path, new HtmlConfig { DefaultRender = false });För inbyggda renderare beskriver CanSearch() visarkapaciteten; den garanterar inte att ett specifikt dokument innehåller användbar text. En PDF vars sidor endast är skannade bilder kan fortfarande ge noll inbyggda resultat.
Normal sökbeteende
Servern försöker sökkällor i följande ordning:
- Inbyggda
ISearchableViewer‑resultat. - Ett förbyggt
.srh‑sökindex. - Ett fel‑ eller tomt resultat när ingen sökkälla finns.
CanSearch() kan vara true för en sökbar viewer även när ett specifikt skannat dokument saknar textlager och därför returnerar inga matchningar.
Licensiering och UI‑beteende
En aktiv Tillfällig/Demo‑licens beviljar Search under sin aktiva period. En saknad licens och en äldre TRIAL‑fil beviljar ingen Search‑kapacitet. Utan Search:
ReferenceCssochReferenceScriptsutelämnar sök‑paketen.- Mellanlagret nekar sök istället för att returnera licensierade resultat.
Styr anpassad UI‑synlighet via IDoconutLicenseService.IsCapabilityGranted(LicenseCapability.Search) och använd CanSearch() för det separata format‑/sessionsverdictet.
Felsökning
| Symtom | Kontroll |
|---|---|
| Sökfältet saknas | Sökkapacitet och IncludeSearchCss/IncludeSearchScripts/IncludeSearchBar |
CanSearch() är false | Formatvisare, vald DefaultRender‑väg och initieringssvarets header |
| Search returnerar noll för en skannad PDF | Dokumentet saknar textlager; använd en textbärande källa eller en PDF‑projektion som bevarar text |
| Search fungerar men markeringar är förskjutna | Renderingsväg, upplösning, dokumenttransformeringar och extraherade ordboxar |
Var den här sidan till hjälp?