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. 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.
Önceki .NET Standard kütüphanesi, bellek önbelleğini, HTTP bağlam erişicisini ve bir veya daha fazla lisans yolunu 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 değil implement eder: belge oturumları oturum önbelleğinde bağımsız olarak yaşar, bu yüzden hizmeti dispose 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. Her açma işlemi eşzamansızdır — senkron 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) | 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ğil (yükleme, veritabanı, blob). fileInfo doğru uzantıyı taşımalıdır — format algılamasını belirler |
// 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ınacak İstisnalar:
LicenseException— bulunan bir lisans reddedilir (mesaj reddetme nedenini taşır), veya format artık sağlanmayan bir eklenti yeteneğine ihtiyaç duyar. Reddetme mesajı olmadan takvim süresi dolması, 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 dispose eder), güvenlik işaretçisini siler ve erişim iznini iptal eder. İsteğe bağlı — kayar süresi 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.
Yetenek bayrakları
| Üye | Anlam |
|---|---|
bool IsSearchEnabled | Mevcut lisans Search izni verir |
bool IsAnnotationEnabled | Mevcut lisans Annotation izni verir |
Bunları bir Razor görünümünde, sunucunun gerçekten sunacağı zaman lisanslı bir Ribbon render etmek 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", örn. "^Sample Copy~Red~24~Verdana~80~-45". |
int | TimeOut | 60 | Dakika cinsinden oturum kayar süresi. |
bool | IsSecured | true | Şu anda uygulanmıyor — ayrılmış. Belirteç bağlama, DoconutOptions.UnsafeMode tarafından global olarak 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:
| 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 adlandırıyordu. |
string | WebFarmPath | "" | Bu iş akışı tarafından kullanılan paylaşımlı yol. Önceden WebfarmPath olarak yazılmıştı. Normal tek sunucu görüntüleyicide boş ve Dağıtık 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ış; 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 baştaki ^ işareti, tüm köşelere yayılmış yerleşimi 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 |
|---|---|---|
Başlangıç ^ | ^ | İsteğe bağlı tüm köşe düzeni. Olmazsa, normal filigran konumu kullanılır. |
| Metin | Confidential | Her sayfada görüntülenen 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ıTipi | Verdana | Talep edilen yazı tipi ailesi. Dağıtım ortamına kurulu olduğundan emin olun. |
| Saydamlık | 80 | 0 ile 255 arasında bir bayt değeri. Başarıyla ayrıştırılmalıdır. |
| Açı | -45 | Derece cinsinden döndürme açısı; geçersiz sayısal giriş varsayılana geri döner. |
Ayrıştırıcı, isteğe bağlı ^ işaretinden sonra 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 | Oluşturulan 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 bunu 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 aktarımlarına da uygulanır. Hareketli GIF çıktısı kare kare damgalanır. Bu nedenle özel bir filigran, bir lisanslı uygulama özelliğidir; değerlendirme filigranını değiştirmek veya bastırmak için bir yol değildir.
Ek açıklamalar API
Sunucu tarafı ek açıklama yükleme ve dışa aktarma. Tam kılavuz Guides → Annotations içinde bulunur; özet ş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 ek açıklamaları oturuma yükle |
void LoadAnnotationData(string token, string annotationData) | AnnotationManager.GetAnnotationData() tarafından döndürülen kodlanmış sayfa/Base64 zarfından ek açıklamaları yükle |
void LoadAnnotationXML(string token, XmlDocument annotationXml) | XML'den ek açıklamaları yükle |
XmlDocument GetAnnotationXML(string token) | Oturumun ek açıklamalarını XML olarak dışa aktar |
Task<byte[]> ExportAnnotationsToPdfAsync(string token, int zoom = 100, CancellationToken ct = default) | Ek açıklamalar gömülü PDF |
Task<int> ExportAnnotationsToPngAsync(…) | Ek açıklamalar gömülü PNG dosyaları |
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default) | Sayfa başına PNG'lerin ek açıklamalar gömülü ZIP'i |
Bu yöntemlerin her biri oturum token'ını alır. Önceki kütüphanenin oturum‑sız GetAnnotationManager(pageWidth, pageHeight) şekli, oturum dışı ek açıklama oluşturmak için hâlâ kullanılabilir, 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 bulunur, 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öner; bir DICOM oturumunda ayrıca platform sınırlamasını açıklayan tek seferlik bir uyarı yazar. Sayfa, çerçeve ve animasyon renderlaması hâlâ desteklenir.
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şturur. Arama ve açıklama gibi lisans kısıtlamalı özellikler için paketler yalnızca lisans bunları etkinleştirdiğinde oluşturulur, böylece istemci UI'si sunucu davranışıyla tutarlı kalır.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)CssConfig bayrakları: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (search-gated), IncludeAnnotationCss (annotation-gated).
ScriptConfig bayrakları: IncludeJQuery (required by all others), IncludeBootstrap, IncludeViewerScripts (core: docViewer.js + splitter + links), IncludeSearchScripts ve IncludeSearchBar (search-gated), IncludeAnnotationScripts ve IncludeAnnotationBar (annotation-gated).
@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 dosyalarını wwwroot içine kopyalayan uygulamalar, sayfa oluşturulan etiketlerden render edildikten sonra bu kopyaları kaldırmalıdır.
Bu sayfa yardımcı oldu mu?