Görüntüleyici

Ana belge görüntüleyici sınıfı

Viewer (namespace Doconut) Razor sayfalarından, MVC denetleyicilerinden, Blazor bileşenlerinden veya minimal API'lerden belge açmak için kullanılan genel giriş noktasını sağlar. sealeddır, AddDoconut() ile transient hizmet olarak kaydedilir ve ctor enjeksiyonu ile çözülür — doğrudan örneklenmez.

Viewer hiçbir istek‑başına durum tutmaz ve kasıtlı olarak IDisposable uygulamaz: belge oturumları oturum önbelleğinde bağımsız olarak yaşar, bu yüzden hizmeti dispose etmek açık bir belgeyi asla kapatamaz (bkz. Core Concepts → How the Viewer Works).

OpenDocumentAsync - Belge Açma

Bir belge açar ve istemci widget'ının sonraki tüm isteklerde kullandığı oturum jetonunu döndürür.

Aşırı YüklemeNe 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)Format‑başına render seçeneklerine ihtiyacınız olduğunda (PdfConfig, WordConfig, …)
Task<string> OpenDocumentAsync(Stream stream, FileInfo fileInfo, BaseConfig? config = null, DocOptions? options = null, CancellationToken ct = default)Belge diskte bir dosya değilse (yükleme, veritabanı, blob). fileInfo doğru uzantıyı taşımalı — bu uzantı format algılamasını yönlendirir
csharp
// Simple open
string token = await viewer.OpenDocumentAsync(path);

// With per-format config and options
token = await viewer.OpenDocumentAsync(
    path,
    new PdfConfig { AllowSearch = true, AllowCopy = true },
    new DocOptions { TimeOut = 30 });

// From an upload
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 sağlanmayan bir eklenti yeteneği ister. Reddetme mesajı olmadan takvim süresi dolduğunda, hata fırlatmak yerine su işaretli render’a geçilir.
  • FormatNotSupportedExceptionDocument format '<extension>' is not supported.
  • InvalidDataException — dosya içeriği bozuk veya uzantısıyla eşleşmiyor.

CloseDocument - Belge Kapatma

text
void CloseDocument(string token)

Oturumu önbellekten kaldırır (belge motorunu hemen dispose eder), güvenlik işaretçisini siler ve erişim iznini iptal eder. İsteğe bağlı — kayma süresi aynı temizlik işlemini yapar — ancak büyük belgeler için önerilir.

GetPageCount - Sayfa Sayısını Al

text
int GetPageCount(string token)

Açık oturumun toplam sayfa sayısını döndürür. Jeton bilinmiyorsa veya süresi dolmuşsa hata fırlatır.

DocOptions - Açma‑Sırasında Format‑Bağımsız Seçenekler (namespace Doconut)

TürÖzellikVarsayılanAçıklama
stringPassword""Korunan belgeler için şifre (format yapılandırmasına otomatik olarak kopyalanır).
intImageResolution0Eski. Yalnızca uyumluluk için tutulur — bunun yerine format yapılandırmasında ImageResolution ayarlayın.
stringWatermark""Render edilen sayfalara çizilen özel filigran metni. Biçim dizesi: "^Text~Color~FontSize~FontName~Opacity~Angle", örn. "^Sample Copy~Red~24~Verdana~80~-45".
intTimeOut60Oturumun dakika cinsinden kayma süresi.
boolIsSecuredtrueŞu anda uygulanmıyor — ayrılmış. Token bağlama, global olarak DoconutOptions.UnsafeMode tarafından kontrol edilir (bkz. Core Concepts → Sessions & Security).

Sınıf ayrıca normal tek‑host görüntüleme akışının dışındaki özel senaryolar için tasarlanmış özellikler sunar:

TürÖzellikVarsayılanAçıklama
boolIsWebFarmfalseAçma işlemini bir web‑farm senaryosu olarak işaretler. Yalnızca ilgili paylaşımlı depolama/oturum mimarisiyle kullanın.
stringWebFarmPath""Özel web‑farm iş akışı tarafından kullanılan paylaşımlı yol. Normal tek‑host görüntüleyicide boş olur.
boolEditModefalseAyrı dağıtılan Editor iş akışı için ayrılmıştır; standart görüntüleyici için false bırakın.

Custom watermark - Özel Filigran

DocOptions.Watermark altı tilde‑ayırıcı alana sahiptir. İsteğe bağlı bir baştaki ^, tüm köşelerde yerleşim talep eder:

text
^Text~Color~FontSize~FontName~Opacity~Angle
csharp
string token = await viewer.OpenDocumentAsync(
    path,
    new PdfConfig(),
    new DocOptions
    {
        Watermark = "^Confidential~Red~24~Verdana~80~-45",
        TimeOut = 30
    });
AlanÖrnekAnlam
Baştaki ^^İsteğe bağlı tüm köşelerde yerleşim. Olmazsa normal filigran konumu kullanılır.
TextConfidentialHer sayfada render edilen metin. Boş olmamalıdır.
ColorRedÇizim katmanı tarafından anlaşılan adlandırılmış renk.
FontSize24Yazı boyutu; geçersiz sayısal giriş varsayılan render’a döner.
FontNameVerdanaİstenen yazı tipi ailesi. Dağıtım ortamında kurulu olduğundan emin olun.
Opacity800‑255 arasında bir byte değeri. Başarıyla ayrıştırılmalıdır.
Angle-45Derece cinsinden dönüş açısı; geçersiz sayısal giriş varsayılan değere döner.

Parser, isteğe bağlı ^ sonrası tam olarak altı alan bekler. Geçersiz bir tanım, SDK’nın görünür Invalid Watermark geri dönüşüyle değiştirilir, sessizce kaybolmaz.

License decision - Lisans Kararı

Lisans durumuSağlanan özel değerOluşturulan sonuç
Geçerli ücretli görüntüleyici lisansıHayırTemiz sayfa
Geçerli ücretli görüntüleyici lisansıEvetÖzel filigran
Aktif Geçici/Demo temel görüntüleyiciHayırTemiz temel‑görüntüleyici sayfası
Aktif Geçici/Demo temel görüntüleyiciEvetTemiz 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ıHerhangi biriUygulama/Değerlendirme filigranı; özel değer bunu geçersiz kılmaz
Değerlendirme kuralları altında eklenti render’ıHerhangi biriDeğerlendirme filigranı

Aynı karar, sunulan sayfa görüntüleri ve açıklama dışa aktarımları için uygulanır. Animasyonlu GIF çıktısı kare‑kare damgalanır. Özel bir filigran, bu yüzden bir lisanslı uygulama özelliğidir; değerlendirme filigranını değiştirmek veya bastırmak için kullanılmaz.

Annotations API - Açıklama API'si

Sunucu tarafı açıklama yükleme ve dışa aktarma. Tam kılavuz Guides → Annotations içinde bulunur; temel arayüz şu şekildedir:

ÜyeAmaç
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)Oturum‑bağımsız yönetici
void LoadAnnotationData(string token, AnnotationManager manager)C# içinde 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ı yanmış PDF
Task<int> ExportAnnotationsToPngAsync(…)Açıklamaları yanmış PNG dosyaları
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default)Açıklamaları yanmış sayfa PNG’lerinin ZIP’i

DICOM metadata - DICOM Meta Verileri

text
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)

DICOM eklentisi aracılığıyla açılan oturumlar için DICOM etiket meta verilerini döndürür; DICOM olmayan belgeler için null.

Resource helpers — ReferenceCss / ReferenceScripts - Kaynak Yardımcıları

UseDoconutResources() tarafından sunulan gömülü kaynaklar için <link>/<script> etiketlerini doğru bağımlılık sırasıyla üretir. Arama ve açıklama gibi lisans‑kısıtlı özellikler için paketler yalnızca lisans etkinleştirdiğinde üretilir, böylece istemci UI’si sunucu davranışıyla tutarlı kalır.

text
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 için gerekli), IncludeBootstrap, IncludeViewerScripts (core: docViewer.js + splitter + links), IncludeSearchScripts ve IncludeSearchBar (arama‑kısıtlı), IncludeAnnotationScripts ve IncludeAnnotationBar (açıklama‑kısıtlı).

html
@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 sayfa yardımcı oldu mu?