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ı sağlar. sealed olarak işaretlenmiştir, AddDoconut() tarafından transient hizmet olarak kaydedilir ve yapıcı enjeksiyonu yoluyla çözülür — asla doğrudan oluşturmayın.

Viewer per-istek durumu tutmaz ve kasıtlı olarak uygulamaz IDisposable: 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 jetonunu döndürür.

Aşırı YükNe Zaman Kullanılır
Task<string> OpenDocumentAsync(string filePath, DocOptions? options = null, CancellationToken ct = default)Diskten otomatik format algılama 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 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ılamayı yönlendirir
csharp
// 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));

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 rendera düşer.
  • FormatNotSupportedException — Document format '<extension>' is not supported.
  • InvalidDataException — dosya içeriği bozuk veya uzantısıyla eşleşmiyor.

CloseDocument

text
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

text
int GetPageCount(string token)

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

DocOptions

Açma başına, format bağımsız seçenekler (namespace Doconut):

TipÖ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 su işareti metni. Biçim dizesi: "^Text~Color~FontSize~FontName~Opacity~Angle", ör. "^Sample Copy~Red~24~Verdana~80~-45".
intTimeOut60Oturum kayar süresi dolma dakikalar içinde.
boolIsSecuredtrueŞu anda uygulanmıyor — ayrılmıştır. Jeton bağlama, global olarak DoconutOptions.UnsafeMode tarafından kontrol edilir (bkz. Temel Kavramlar → Oturumlar ve 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:

TipÖ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 sunucu görüntüleyicide boş.
boolEditModefalseAyrı dağıtılan Editor 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öşeler düzenini 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
Ön ^^İsteğe bağlı tüm köşeler düzeni. Olmazsa, normal filigran yerleştirme kullanılır.
MetinConfidentialHer sayfada render edilen metin. Boş olmamalıdır.
RenkRedÇizim katmanı tarafından anlaşılan adlandırılmış renk.
YazıBoyutu24Yazı boyutu; geçersiz sayısal giriş renderlayıcı varsayılanına geri döner.
YazıTipiVerdanaTalep edilen yazı tipi ailesi. Dağıtım ortamına kurulu olduğundan emin olun.
Opaklık800 ile 255 arasında byte değeri. Başarıyla ayrıştırılmalıdır.
Açı-45Derece 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 durumuSağlanan özel değerRender edilen sonuç
Geçerli ücretli görüntüleyici lisansıHayırTemiz sayfa
Geçerli ücretli görüntüleyici lisansıEvetÖzel filigran
Etkin Geçici/Demo temel görüntüleyiciHayırTemiz temel-görüntüleyici sayfası
Etkin 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ıHer ikisiUygulama/değerlendirme filigranı; özel değer onu geçersiz kılmaz
Değerlendirme kuralları altında eklenti renderıHer ikisiDeğerlendirme filigranı

Aynı karar, sunulan sayfa görüntülerine ve açıklama dışa aktarmalarına uygulanır. Hareketli GIF çıktısı kare kare damgalanır. Bu nedenle özel filigran, bir lisanslı uygulama özelliğidir, değerlendirme filigranını değiştirmek veya bastırmak için bir yol değildir.

Açıklama API'si

Sunucu tarafı açıklama yükleme ve dışa aktarma. Tam kılavuz Guides → Annotations içinde bulunur; yüzey ş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)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'leri açıklamaları gömülü ZIP

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.

Kaynak yardımcıları — ReferenceCss / ReferenceScripts

Gömülü kaynakları UseDoconutResources() tarafından sunulan doğru bağımlılık sırasıyla <link>/<script> etiketlerini oluştur. Arama ve açıklama gibi lisans kısıtlamalı özellikler için paketler yalnızca lisans bunları etkinleştirdiğinde oluşturulur, istemci UI'sını sunucu davranışıyla tutarlı tutar.

text
string ReferenceCss(CssConfig? config = null)      // null → Bootstrap + viewer + search + annotation
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 + ayırıcı + bağlantılar), IncludeSearchScripts ve IncludeSearchBar (arama kısıtlamalı), IncludeAnnotationScripts ve IncludeAnnotationBar (açıklama kısıtlamalı).

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 }))

GetWorksheetNames

text
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 olmadığında ise boş bir liste döndürür.

26.9.0 sürümünde eklendi.

Bu sayfa yardımcı oldu mu?