Arama
Görüntüleyici bileşiminde yerel metin araması
Doconut Viewer, format görüntüleyicisi tarafından çıkarılan metin veya metin tabanlı bir PDF yönlendirmesi kullanarak normal Arama sağlar. Search lisans yeteneğini gerektirir.
Arama UI'sını etkinleştir
Arama, bağımsız bir araç çubuğu değil, bir Viewer modülüdür. Tam sayfa Viewer kaynaklarını, Viewer araç çubuğunu, Viewer montajını ve başlatılmış objViewer'ı içermelidir; ardından Arama Ribbon'u aynı örneğe monte edilir ve eklenir.
Arama ve açıklama, yerleşik lisanslı özelliklerdir, AddPlugin<T>() paketleri değildir. Enjekte edilmiş Viewer'dan arama kaynaklarını isteyin; etiketleri yalnızca lisans Arama izni verdiğinde yayınlanır.
@Html.Raw(Viewer.ReferenceCss(new CssConfig
{
IncludeViewerCss = true,
IncludeSearchCss = true
}))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig
{
IncludeJQuery = true,
IncludeViewerScripts = true,
IncludeSearchScripts = true,
IncludeSearchBar = true
}))Gömülü ribbon, özel bir UI'da mevcut olan aynı JavaScript yöntemlerini çağırır.
Tam Viewer bileşenini işaretlemede görünür tutun, önce docViewer'ı başlatın ve ardından lisanslı Ribbon'u ekleyin:
<nav id="toolbar" aria-label="Document viewer controls">
<!-- Viewer controls, including the button that opens 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>Bileşen Find, Options ve Results gruplarını enjekte eder ve aramayı, temizlemeyi, eşleşme sayılarını ve önceki/sonraki eşleşme gezinimini yönetir. Host tarafından sahip olunan bir Viewer araç çubuğu yalnızca bunu açıp kapatmalıdır:
searchBar.isOpen() ? searchBar.close() : searchBar.open();Genel API'si kasıtlı olarak küçüktür:
| Yöntem | Amaç |
|---|---|
attach(objViewer) | Ribbon'u başlatılmış görüntüleyiciye bağlar; bir kez gereklidir |
open() / close() | Ribbon'u gösterir veya gizler; kapatmak aynı zamanda vurgulamaları temizler |
reset() | Mevcut terimi, sonuç sayısını ve vurgulamaları temizler |
isOpen() | Ribbon'un görünür olup olmadığını raporlar |
setStatus(message) | Yapılandırılmış geri çağırma aracılığıyla bir durum mesajını iletir |
İsteğe bağlı onToggle(isOpen) geri çağırması, host'un Arama düğmesini senkronize etmesine izin verir ve onLayout Ribbon yüksekliği değiştiğinde görüntüleyiciyi yeniden boyutlandırıp yeniden sığdırmasını sağlar. Birleştirilmiş Viewer, Arama ve Annotation başlangıç sırası için, bakınız Hızlı Başlangıç.
JavaScript'ten Arama
objViewer.Search(keyword, false, function (resultCount) {
console.log('Matches:', resultCount);
});İkinci argüman tam kelime/eşleşme kontrolüdür. Geri çağırmadan sonra:
| Yöntem | Sonuç |
|---|---|
SearchMatchCount() | Belgedeki toplam bireysel eşleşmeler. |
SearchSummary(false) | [pageNumber, matchCount] girişleri yeniden boyamadan. |
SearchSummary(true) | Aynı özet ve sayfa/küçük resim vurgularını çizer. |
GotoSearchMatch(index) | Sıfır tabanlı bir eşleşme indeksine gider. |
Arama yeteneğini kontrol et
Başlatma yanıtı şunları rapor eder:
X-Doconut-Can-Search: 1Başlatmadan sonra, objViewer.CanSearch() aynı format/oturum kararını gösterir. Sunucu 0 gönderdiğinde false döner; yanıt gelmeden önce veya başlığı atlayan eski bir sunucu ile varsayılan değer true olur.
Üç bağımsız kapı karıştırılmamalıdır:
| Kapı | Soru |
|---|---|
CanSearch() / yanıt başlığı | Çözülmüş görüntüleyicinin yerel bir indeks/arama yolu var mı? |
AllowSearch | Bu format yapılandırması, anahtarın bulunduğu yerde metin çıkarımını talep etti mi? |
LicenseCapability.Search | Uygulama aramayı yürütmek ve UI paketlerini almak için yetkilendirilmiş mi? |
Bir format teknik olarak aranabilir olabilir, ancak mevcut lisans işlemi reddedebilir.
Format başına çıkarımı etkinleştir
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
AllowSearch = true,
AllowCopy = true // optional: lets the user drag a region and copy its text
});AllowSearch ve AllowCopy, PdfConfig, WordConfig, ExcelConfig ve PptConfig içinde bulunur. Office özellikleri, iç içe PdfConfig'e delege eder. Her ikisi de varsayılan olarak false değerindedir.
PDF, Word, Excel, PowerPoint, TXT, Visio, e-posta, EPUB ve MHT için normal yerel arama adaptörleri mevcuttur. XPS varsayılan olarak PDF yolunu kullanır. HTML ve Microsoft Project, metin tabanlı bir PDF yönlendirmesinden faydalanır:
// DefaultRender = false → converted to a text-based PDF → searchable
var token = await viewer.OpenDocumentAsync(path, new HtmlConfig { DefaultRender = false });Yerel renderlayıcılar için, CanSearch() görüntüleyici yeteneğini tanımlar; belirli bir belgenin kullanılabilir metin içerdiğini garanti etmez. Sayfaları yalnızca taranmış görüntüler olan bir PDF yine de sıfır yerel sonuç üretebilir.
Normal Arama davranışı
Sunucu arama kaynaklarını şu sırayla dener:
- Yerel
ISearchableViewersonuçları. - Önceden oluşturulmuş bir
.srharama indeksi. - Arama kaynağı bulunmadığında hata/boş sonuç.
CanSearch(), belirli bir taranmış belgenin metin katmanı olmaması ve bu yüzden eşleşme döndürmemesi durumunda bile, aranabilir bir görüntüleyici için doğru (true) olabilir.
Lisanslama ve UI davranışı
Aktif bir Geçici/Demo lisansı, aktif dönemi boyunca Arama izni verir. Eksik bir lisans ve eski TRIAL dosyası hiçbir Arama yeteneği sağlamaz. Arama olmadan:
ReferenceCssveReferenceScriptsarama paketlerini atlar.- Ara katman, lisanslı sonuçlar döndürmek yerine aramayı reddeder.
IDoconutLicenseService.IsCapabilityGranted(LicenseCapability.Search) üzerinden özel UI görünürlüğünü yönetin ve ayrı format/oturum kararları için CanSearch()'ı kullanın.
Sorun Giderme
| Belirti | Kontrol |
|---|---|
| Arama çubuğu eksik | Arama yeteneği ve IncludeSearchCss/IncludeSearchScripts/IncludeSearchBar |
CanSearch() false | Format görüntüleyici, seçilen DefaultRender yolu ve başlatma yanıt başlığı |
| Arama taranmış bir PDF için sıfır döner | Belgenin metin katmanı yok; metin içeren bir kaynak veya metni koruyan bir PDF projeksiyonu kullanın |
| Arama çalışıyor ancak vurgular kaymış | Render yolu, çözünürlük, belge dönüşümleri ve çıkarılan kelime kutuları |
Bu sayfa yardımcı oldu mu?