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ıdır. kapalı olarak işaretlenmiştir, AddDoconut() tarafından geçici hizmet olarak kaydedilir ve yapılandırıcı enjeksiyonu ile çözülür — asla doğrudan oluşturmayın.
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 yok etmek açık bir belgeyi asla kapatamaz (bkz. Temel Kavramlar → Görüntüleyicinin Nasıl Çalıştığı).
OpenDocumentAsync
Bir belge açar ve istemci widget'ının sonraki tüm isteklerde kullandığı oturum belirtecini döndürür.
| Aşırı Yük | 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 render seçeneklerine ihtiyacınız var (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);
// Her format için yapılandırma ve seçeneklerle
token = await viewer.OpenDocumentAsync(
path,
new PdfConfig { AllowSearch = true, AllowCopy = true },
new DocOptions { TimeOut = 30 });
// Bir yüklemeden
await using var ms = new MemoryStream();
await file.CopyToAsync(ms);
ms.Position = 0;
token = await viewer.OpenDocumentAsync(ms, new FileInfo(file.FileName));Ele alınması 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 dolduğunda, hata fırlatmak yerine su işareti ekli render'a düş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 yok eder), güvenlik işaretçisini siler ve erişim iznini iptal eder. İsteğe bağlı — kayar süresi dolma aynı temizlik işlemini 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.
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. Sadece uyumluluk için tutulur — bunun yerine format yapılandırmasında ImageResolution ayarlayın. |
string | Watermark | "" | Render edilen sayfalara çizilen özel su işareti metni. Biçim dizesi: "^Text~Color~FontSize~FontName~Opacity~Angle", ör. "^Sample Copy~Red~24~Verdana~80~-45". |
int | TimeOut | 60 | Oturum kayar süresi dolma dakikalar içinde. |
bool | IsSecured | true | Şu anda uygulanmıyor — ayrılmış. Belirteç bağlaması global olarak DoconutOptions.UnsafeMode tarafından kontrol edilir (bkz. Temel Kavramlar → Oturumlar & Güvenlik). |
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 bir web-farm senaryosu olarak işaretler. Yalnızca ilgili paylaşımlı depolama/oturum mimarisiyle kullanın. |
string | WebFarmPath | "" | Özel web-farm iş akışı tarafından kullanılan paylaşımlı yol. Normal tek sunucu görüntüleyicide boş. |
bool | EditMode | false | Ayrı dağıtılan Editor iş akışı için ayrılmış; 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öşeler 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 |
|---|---|---|
Öncü ^ | ^ | İsteğe bağlı tüm köşe düzeni. Bunun olmaması durumunda normal filigran yerleştirme 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 | Talep edilen yazı ailesi. Dağıtım ortamına kurulu olduğundan emin olun. |
| Opaklık | 80 | 0 ile 255 arasında bayt 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ında 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 |
| Etkin Geçici/Demo temel görüntüleyici | Hayır | Temiz temel-görüntüleyici sayfası |
| Etkin 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 adı lisansı | Her ikisi | Uygulama/değerlendirme filigranı; özel değer onu geçersiz kılmaz |
| Değerlendirme kuralları altında eklenti renderlaması | Her ikisi | Değerlendirme filigranı |
Aynı karar, sunulan sayfa görüntülerine ve ek açıklama dışa aktarmalarına uygulanır. Hareketli GIF çıktısı çerçeve çerçeve 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çıklamalar API
Sunucu tarafı açıklama yükleme ve dışa aktarma. Tam kılavuz Guides → Annotations içinde bulunur; yüzey ş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 |
DICOM meta verileri
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Bu yöntem API uyumluluğu için mevcuttur, ancak .NET 6 DICOM görüntüleyici teknik etiketleri sağlayamaz. DICOM ve non-DICOM 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 renderlaması desteklenmeye devam eder.
Kaynak yardımcıları — ReferenceCss / ReferenceScripts
Gömülü kaynakları UseDoconutResources() tarafından sunulan <link>/<script> etiketlerini doğru bağımlılık sırasıyla oluştur. Arama ve açıklama gibi lisans-kısıtlı özellikler için paketler yalnızca lisans bunları etkinleştirdiğinde oluşturulur, istemci UI'sını sunucu davranışıyla tutarlı tutar.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)CssConfig bayrakları: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (arama-kısıtlı), IncludeAnnotationCss (açıklama-kısıtlı).
ScriptConfig bayrakları: IncludeJQuery (tüm diğerleri tarafından gereklidir), IncludeBootstrap, IncludeViewerScripts (çekirdek: docViewer.js + ayırıcı + bağlantılar), IncludeSearchScripts ve IncludeSearchBar (arama-kısıtlı), IncludeAnnotationScripts ve IncludeAnnotationBar (açıklama-kısıtlı).
@inject Doconut.Viewer Viewer
@Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true }))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeViewerScripts = true }))GetWorksheetNames
IReadOnlyList<string> GetWorksheetNames(string token)Açık bir elektronik tablonun ç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öndürür.
26.9.0'da eklendi.
Bu sayfa yardımcı oldu mu?