Arama
Viewer bileşeninde yerel metin araması
Doconut Viewer, format görüntüleyicisi tarafından çıkarılan metin veya metin tabanlı PDF yönlendirmesi kullanarak normal Arama sağlar. Search lisans yeteneği gerekir.
Arama UI'sını Etkinleştirin
Arama, bağımsız bir araç çubuğu olmayan 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, AddPlugin<T>() paketleri olmayan yerleşik lisanslı özelliklerdir. Arama kaynaklarını enjekte edilen Viewer'dan isteyin; etiketleri yalnızca lisans Arama'yı 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'ye sunulan aynı JavaScript yöntemlerini çağırır.
Tam Viewer bileşenini işaretlemede tutun, önce docViewer'ı başlatın ve ardından lisanslı Ribbon'u ekleyin:
<nav id="toolbar" aria-label="Document viewer controls">
<!-- Viewer kontrolleri, Search'ü açan düğmeyi dahil -->
</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 gezinmesini yönetir. Host tarafından sahip olunan bir Viewer araç çubuğu yalnızca bunu açıp kapatmak zorundadır:
searchBar.isOpen() ? searchBar.close() : searchBar.open();Kamu 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 gerekir |
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 arama üzerinden bir durum mesajını iletir |
İsteğe bağlı onToggle(isOpen) geri araması, 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ır/refit eder. Birleşik Viewer, Arama ve Açıklama 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 aramasını belirtir. Geri aramadan sonra:
| Yöntem | Sonuç |
|---|---|
SearchMatchCount() | Belgede toplam bireysel eşleşme sayısı. |
SearchSummary(false) | Yeniden boyamadan [pageNumber, matchCount] girdileri. |
SearchSummary(true) | Aynı özet ve sayfa/küçük resim vurgularını çizer. |
GotoSearchMatch(index) | Sıfır tabanlı bir eşleşme indeksine gider. |
Ara katman rotası search=<term> ve exact=true|false kullanır ve XML döndürür. İç yanıtı kendiniz ayrıştırmak yerine widget API'sini kullanın.
Arama Yeteneğini Kontrol Edin
Başlatma yanıtı şunu rapor eder:
X-Doconut-Can-Search: 1Başlatmadan sonra, objViewer.CanSearch() aynı format/oturum kararını ortaya koyar. Sunucu 0 gönderdiğinde false döner; yanıt gelmeden veya başlık içermeyen eski bir sunucu ile karşılaşıldığında varsayılan olarak true döner.
Üç bağımsız kapı karıştırılmamalıdır:
| Kapı | Soru |
|---|---|
CanSearch() / response header | Çözülmüş görüntüleyicinin yerel bir indeks/arama yolu var mı? |
AllowSearch | Bu format yapılandırması, geçişin mevcut olduğu 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ştirin
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
AllowSearch = true,
AllowCopy = true // isteğe bağlı: kullanıcının bir bölgeyi sürükleyip metnini kopyalamasına izin verir
});AllowSearch ve AllowCopy, PdfConfig, WordConfig, ExcelConfig ve PptConfig üzerinde bulunur. Office özellikleri, iç içe PdfConfig'lerine yönlendirilir. 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 bağdaştırıcıları vardır. XPS varsayılan olarak PDF yolunu kullanır. HTML ve Microsoft Project, metin tabanlı PDF yönlendirmesinden faydalanır:
// DefaultRender = false → metin tabanlı PDF'ye dönüştürülür → aranabilir
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 hâlâ sıfır yerel sonuç üretebilir.
Normal Arama Davranışı
Sunucu arama kaynaklarını şu sırayla dener:
- Yerel
ISearchableViewersonuçları. - Önceden oluşturulmuş
.srharama indeksi. - Arama kaynağı bulunmadığında hata/boş sonuç.
CanSearch() bir görüntüleyicinin aranabilir olduğunu gösterebilir, ancak taranmış bir belgenin metin katmanı yoksa eşleşme döndürmez.
Lisanslama ve UI Davranışı
Aktif bir Temporary/Demo lisansı, etkin olduğu sürece Arama yeteneği verir. Eksik bir lisans ve eski TRIAL dosyası hiçbir Arama yeteneği sağlamaz. Arama olmadan:
ReferenceCssveReferenceScriptsarama paketlerini dışarı çıkarır.- Ara katman, lisanslı sonuçlar döndürmek yerine aramayı reddeder.
Özel UI görünürlüğünü IDoconutLicenseService.IsCapabilityGranted(LicenseCapability.Search) ile 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çili DefaultRender yolu ve başlatma yanıt başlığı |
| Tarama PDF'si için arama sıfır döner | Belgenin metin katmanı yok; metin içeren bir kaynak ya da metni koruyan bir PDF projeksiyonu kullanın |
| Arama çalışıyor ama vurgulamalar kayıyor | Render yolu, çözünürlük, belge dönüşümleri ve çıkarılan kelime kutuları |
Bu sayfa yardımcı oldu mu?