Görüntüleyici
Ana belge görüntüleyici sınıfı
Viewer (namespace Doconut) belgeleri Razor sayfalarından, MVC denetleyicilerinden, Blazor bileşenlerinden veya minimal API'lerden açmak için genel giriş noktasınıdır. mühürlenmiş olarak işaretlenmiştir, AddDoconut() tarafından geçici hizmet olarak kaydedilir ve yapıcı enjeksiyonu yoluyla çözülür — asla doğrudan oluşturmayın.
Önceki .NET Standard kitaplığı, bellek önbelleği, HTTP bağlam erişicisi ve bir veya daha fazla lisans yolu alan bir genel yapıcı sunuyordu. Bu yapıcı artık yok; hizmet grafiği bu bağımlılıkları sağlar.
Viewer hiçbir istek başına durum tutmaz ve kasıtlı olarak IDisposable'i uygulamaz: belge oturumları oturum önbelleğinde bağımsız olarak yaşar, bu yüzden hizmeti kapatmak açık bir belgeyi asla kapatamaz (bkz. Temel Kavramlar → Görüntüleyicinin Nasıl Çalıştığı).
OpenDocumentAsync
Bir belge açar ve istemci bileşeninin sonraki tüm isteklerde kullandığı oturum belirtecini döndürür. Her açma işlemi eşzamansızdır — eşzamanlı bir OpenDocument yoktur.
| Aşırı Yükleme | Ne zaman kullanılmalı |
|---|---|
Task<string> OpenDocumentAsync(string filePath, DocOptions? options = null, CancellationToken ct = default) | Diskten otomatik format algılaması ve formatın varsayılan yapılandırmasıyla açma |
Task<string> OpenDocumentAsync(string filePath, BaseConfig? config, DocOptions? options = null, CancellationToken ct = default) | Her format için görselleştirme seçeneklerine ihtiyacınız varsa (PdfConfig, WordConfig, …) |
Task<string> OpenDocumentAsync(Stream stream, FileInfo fileInfo, BaseConfig? config = null, DocOptions? options = null, CancellationToken ct = default) | Belge disk üzerinde bir dosya değildir (yükleme, veritabanı, blob). fileInfo doğru uzantıyı taşımalıdır — bu, format algılamasını yönlendirir |
// Basit aç
string token = await viewer.OpenDocumentAsync(path);
// Biçim başına yapılandırma ve seçeneklerle
token = await viewer.OpenDocumentAsync(
path,
new PdfConfig { AllowSearch = true, AllowCopy = true },
new DocOptions { TimeOut = 30 });
// Yüklemeden
await using var ms = new MemoryStream();
await file.CopyToAsync(ms);
ms.Position = 0;
token = await viewer.OpenDocumentAsync(ms, new FileInfo(file.FileName));İşlenmesi gereken istisnalar:
LicenseException— bulunan bir lisans reddedilir (mesaj reddetme nedenini taşır) veya format artık verilmemiş bir eklenti yeteneğine ihtiyaç duyar. Reddetme mesajı olmadan takvim süresi dolması, hata fırlatmak yerine su işaretiyle görselleştirmeye geçer.FormatNotSupportedException—Document format '<extension>' is not supported.InvalidDataException— dosya içeriği bozuk veya uzantısıyla eşleşmiyor.
CloseDocument
void CloseDocument(string token)Oturumu önbellekten kaldırır (belge motorunu hemen kapatır), güvenlik işaretçisini siler ve erişim iznini iptal eder. İsteğe bağlı — kayan süresi dolma aynı temizliği yapar — ancak büyük belgeler için önerilir.
GetPageCount
int GetPageCount(string token)Açık oturumun toplam sayfa sayısı. Belirteç bilinmiyorsa veya süresi dolmuşsa hata fırlatır.
GetWorksheetNames
IReadOnlyList<string> GetWorksheetNames(string token)Açık bir elektronik tabloyun çalışma sayfası adlarını, çalışma kitabı sırasına göre döndürür; açık belge bir elektronik tablo değilse boş bir liste döner.
Yalnızca görselleştirilen çalışma sayfaları listelenir: gizli ve boş çalışma sayfaları dışlanır ve ExcelConfig.SheetNames görselleştirmeyi kısıtladığında yalnızca o çalışma sayfaları görünür. Bir çalışma sayfası her zaman tek bir sayfa değildir — çok büyük bir sayfa birkaç sayfaya yayılır. Belirteç bilinmiyorsa veya süresi dolmuşsa hata fırlatır.
26.9.0'da eklendi.
Yetenek bayrakları
| Üye | Anlam |
|---|---|
bool IsSearchEnabled | Mevcut lisans Search verir |
bool IsAnnotationEnabled | Mevcut lisans Annotation verir |
Bunları bir Razor görünümünde, yalnızca sunucu gerçekten hizmet verecekse lisanslı bir Şerit oluşturmak için kullanın — bkz. Hızlı Başlangıç.
DocOptions
Açma başına, format bağımsız seçenekler (namespace Doconut):
| Tür | Özellik | Varsayılan | Açıklama |
|---|---|---|---|
string | Password | "" | Korunan belgeler için şifre (format yapılandırmasına otomatik olarak kopyalanır). |
int | ImageResolution | 0 | Eski. Yalnızca uyumluluk için tutulur — bunun yerine format yapılandırmasında ImageResolution ayarlayın. |
string | Watermark | "" | Render edilen sayfalara çizilen özel filigran metni. Biçim dizesi: "^Text~Color~FontSize~FontName~Opacity~Angle", ör. "^Sample Copy~Red~24~Verdana~80~-45". |
int | TimeOut | 60 | Dakika cinsinden oturum kaydırmalı süresi. |
bool | IsSecured | true | Şu anda uygulanmıyor — ayrılmış. Token bağlama, DoconutOptions.UnsafeMode tarafından küresel olarak kontrol edilir (bkz. Core Concepts → Sessions & Security). |
Sınıf ayrıca, normal tek sunucu görüntüleme akışının dışına kasıtlı olarak yerleştirilmiş özel özellikler sunar:
| Tür | Özellik | Varsayılan | Açıklama |
|---|---|---|---|
bool | IsWebFarm | false | Açma işlemini paylaşımlı depolama senaryosu olarak işaretler. Büyük/küçük harfe dikkat edin — önceki kütüphane bunu IsWebfarm olarak yazmıştı. |
string | WebFarmPath | "" | O iş akışı tarafından kullanılan paylaşımlı yol. Önceden WebfarmPath olarak yazılmıştı. Normal tek sunucu görüntüleyicide boştur ve Dağıtılmış Dağıtımlar içinde açıklanan yayın yolunda gerekmez. |
bool | EditMode | false | Ayrı bir dağıtılmış düzenleme iş akışı için ayrılmıştır; standart görüntüleyici için false bırakın. |
Özel filigran
DocOptions.Watermark altı tilde ile ayrılmış alan kullanır. İsteğe bağlı bir ön ^ tüm köşe düzenini talep eder:
^Text~Color~FontSize~FontName~Opacity~Anglestring token = await viewer.OpenDocumentAsync(
path,
new PdfConfig(),
new DocOptions
{
Watermark = "^Confidential~Red~24~Verdana~80~-45",
TimeOut = 30
});| Alan | Örnek | Anlam |
|---|---|---|
Ön ^ | ^ | İsteğe bağlı tüm köşe düzeni. Olmazsa, normal filigran yerleşimi kullanılır. |
| Metin | Confidential | Her sayfada render edilen metin. Boş olmamalıdır. |
| Renk | Red | Çizim katmanı tarafından anlaşılan adlandırılmış renk. |
| YazıBoyutu | 24 | Yazı boyutu; geçersiz sayısal giriş renderlayıcı varsayılanına geri döner. |
| YazıAdı | Verdana | İstenen yazı tipi ailesi. Dağıtım ortamına kurulu olduğundan emin olun. |
| Saydamlık | 80 | 0 ile 255 arasında bir byte değeri. Başarıyla ayrıştırılmalıdır. |
| Açı | -45 | Derece cinsinden dönüş açısı; geçersiz sayısal giriş varsayılana geri döner. |
Ayrıştırıcı, isteğe bağlı ^ sonrası tam olarak altı alan bekler. Geçersiz bir tanım, sessizce kaybolmak yerine SDK'nın görünür Invalid Watermark geri dönüşüyle değiştirilir.
Lisans kararı
| Lisans durumu | Sağlanan özel değer | Render edilen sonuç |
|---|---|---|
| Geçerli ücretli görüntüleyici lisansı | Hayır | Temiz sayfa |
| Geçerli ücretli görüntüleyici lisansı | Evet | Özel filigran |
| Aktif Geçici/Demo temel görüntüleyici | Hayır | Temiz temel-görüntüleyici sayfası |
| Aktif Geçici/Demo temel görüntüleyici | Evet | Temiz temel-görüntüleyici yolu uygulandığında özel filigran |
| Eksik, reddedilmiş, süresi dolmuş, yanlış sürüm veya geçersiz alan lisansı | Herhangi biri | Uygulama/değerlendirme filigranı; özel değer bunu geçersiz kılmaz |
| Değerlendirme kuralları altında eklenti renderı | Herhangi biri | Değerlendirme filigranı |
Aynı karar, sunulan sayfa görüntülerine ve açıklama dışa aktarmalarına da uygulanır. Hareketli GIF çıktısı kare kare damgalanır. Bu nedenle özel bir filigran, lisanslı bir uygulama özelliğidir, değerlendirme filigranını değiştirmek veya bastırmak için bir yol değildir.
Açıklama API'si
Sunucu taraflı açıklama yükleme ve dışa aktarma. Tam kılavuz Guides → Annotations içinde bulunur; ara yüz şu şekildedir:
| Üye | Amaç |
|---|---|
AnnotationManager GetAnnotationManager(string token) | Açık oturumun sayfa boyutlarına bağlı yönetici |
AnnotationManager GetAnnotationManager(string token, int pageWidth, int pageHeight) | Açık sayfa boyutlarıyla yönetici |
AnnotationManager GetAnnotationManager(int pageWidth, int pageHeight) | Oturuma bağımlı olmayan yönetici |
void LoadAnnotationData(string token, AnnotationManager manager) | C#'ta oluşturulan açıklamaları oturuma yükle |
void LoadAnnotationData(string token, string annotationData) | AnnotationManager.GetAnnotationData() tarafından döndürülen kodlanmış sayfa/Base64 zarfından açıklamaları yükle |
void LoadAnnotationXML(string token, XmlDocument annotationXml) | XML'den açıklamaları yükle |
XmlDocument GetAnnotationXML(string token) | Oturumun açıklamalarını XML olarak dışa aktar |
Task<byte[]> ExportAnnotationsToPdfAsync(string token, int zoom = 100, CancellationToken ct = default) | Açıklamaları gömülü PDF |
Task<int> ExportAnnotationsToPngAsync(…) | Açıklamaları gömülü PNG dosyaları |
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default) | Sayfa başına PNG'lerin açıklamaları gömülü ZIP'i |
Bunların her biri oturum token'ını alır. Önceki kütüphanenin oturumsuz GetAnnotationManager(pageWidth, pageHeight) şekli, oturum dışı açıklama oluşturmak için hâlâ vardır, ancak bunları yüklemek yine bir token gerektirir.
DICOM meta verileri
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Bu yöntem API uyumluluğu için mevcuttur, ancak bu paket teknik DICOM etiketlerini sağlayamaz: meta veri okuyucu yalnızca bir .NET 8 derlemesiyle gelir. DICOM ve DICOM olmayan oturumlar için null döndürür; bir DICOM oturumunda ayrıca platform sınırlamasını açıklayan tek seferlik bir uyarı yazar. Sayfa, çerçeve ve animasyon render'ı desteklenmeye devam eder.
Kaynak yardımcıları — ReferenceCss / ReferenceScripts
Gömülü kaynakları sağlayan UseDoconutResources() için <link>/<script> etiketlerini doğru bağımlılık sırasıyla üretin. Arama ve açıklama gibi lisans kısıtlamalı özellikler için paketler yalnızca lisans bunları etkinleştirdiğinde üretilir, böylece istemci UI'si sunucu davranışıyla tutarlı kalır.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + görüntüleyici + arama + açıklama
string ReferenceScripts(ScriptConfig? config = null)CssConfig bayrakları: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (arama kısıtlamalı), IncludeAnnotationCss (açıklama kısıtlamalı).
ScriptConfig bayrakları: IncludeJQuery (tüm diğerleri tarafından gereklidir), IncludeBootstrap, IncludeViewerScripts (çekirdek: docViewer.js + bölücü + bağlantılar), IncludeSearchScripts ve IncludeSearchBar (arama kısıtlamalı), IncludeAnnotationScripts ve IncludeAnnotationBar (açıklama kısıtlamalı).
@inject Doconut.Viewer Viewer
@Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true }))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeViewerScripts = true }))Bu yardımcılar, tarayıcı kaynaklarını sunmanın desteklenen yoludur. docViewer.js, documentLinks.js ve docViewer.UI.js'i wwwroot içine kopyalayan uygulamalar, sayfa üretilen etiketlerden render edildiğinde bu kopyaları kaldırmalıdır.
Bu sayfa yardımcı oldu mu?