Görüntüleyici

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

Viewer (namespace Doconut) MVC denetleyicilerinden, Web Forms sayfalarından ve işleyicilerden belgeleri açmak için genel giriş noktasıdır. DoconutHost.Initialize tarafından oluşturulan bir geçici hizmettir; kullandığınız yerde çözün:

csharp
var viewer = Doconut.DoconutHost.Services.GetRequiredService<Viewer>();

new Viewer() aynı zamanda DoconutHost.Initialize çalıştırıldıktan sonra da çalışır — aynı hizmetleri çözer — bu da klasik paketten taşınan kodun derlenmesini sürdürür. Initialize çağrılmadan önce, InvalidOperationException fırlatır.

Viewer hiçbir istek başına belge durumu tutmaz ve kasıtlı olarak IDisposable uygulamaz: belge oturumları ondan bağımsız olarak yaşar, bu yüzden bir Viewer nesnesinin iptal edilmesi açık bir belgeyi asla kapatamaz (bkz. Görünümün Nasıl Çalıştığı).

OpenDocumentAsync (Asenkron)

Bir belge açar ve widget'ın sonraki tüm isteklerde kullandığı oturum belirtecini döndürür. UnsafeMode false olduğunda (varsayılan), belirteç geçerli isteğin ASP.NET oturumuna verilir — oturum durumu olan bir istekten çağırın (bkz. Oturumlar ve Güvenlik).

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‑özel render ayarlarına 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ıdır — formatı seçer
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 (HttpPostedFileBase in MVC; HttpPostedFile in Web Forms)
using (var ms = new MemoryStream())
{
    await file.InputStream.CopyToAsync(ms);
    ms.Position = 0;
    token = await viewer.OpenDocumentAsync(ms, new FileInfo(Path.GetFileName(file.FileName)));
}

Ele alınması gereken istisnalar:

  • LicenseException — bir lisans bulundu ancak reddedildi (mesaj nedeni taşır) veya format, lisansın vermediği bir eklenti yeteneği gerektiriyor.
  • FormatNotSupportedException — hiçbir görüntüleyici dosyanın uzantısını desteklemiyor.
  • InvalidDataException — içerik bozuk veya uzantısıyla eşleşmiyor.

OpenDocument (Senkron)

Web Forms kod‑arkası ve asenkron sayfalar kullanmayan diğer kodlar için:

text
string OpenDocument(string filePath, BaseConfig? config = null, DocOptions? options = null)
string OpenDocument(Stream stream, string fileName, BaseConfig? config = null, DocOptions? options = null)
string OpenDocument(byte[] bytes, string fileName, BaseConfig? config = null, DocOptions? options = null)

Her biri belirteci döndürür ve ayrıca viewer.Token içinde saklar. fileName doğru uzantıyı taşımalıdır. Bu sarmalayıcılar bir Web Forms sayfasından güvenle çağrılabilir: açma yolu ASP.NET istek bağlamına asla geri dönmez, bu yüzden beklemek deadlock oluşturmaz. Aynı şey her asenkron Doconut API'si için geçerli değildir — bkz. Web Forms bölümü Dönüştürücü Eklentisi.

Belgeyi Kapat

text
void CloseDocument(string token)

Oturuşu kaldırır (belge motorunu hemen serbest bırakır), token'ın iznini mevcut isteğin ASP.NET oturumundan kaldırır ve token'ı iptal eder. İsteğe bağlı — kayar süresi aynı temizlik işlemini yapar — ancak büyük belgeler için önerilir.

Oturum Sorguları

ÜyeDöndürür
int GetPageCount(string token)Açık belgenin toplam sayfa sayısı
(int Width, int Height) GetPageDimensions(string token, int page = 1)%100 yakınlaştırmada varsayılan işlenmiş sayfa boyutu — kod içinde oluşturulan açıklamalar için koordinat alanı
IReadOnlyList<string> GetWorksheetNames(string token)Bir elektronik tablonun işlenmiş çalışma sayfaları, çalışma kitabı sırasına göre; diğer belgeler için boş

Token bilinmiyorsa veya süresi dolmuşsa her biri bir istisna fırlatır.

DocSeçenekleri

Açılış başına, 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).
stringWatermark""İşlenmiş sayfalara çizilen özel filigran metni — aşağıya bakın.
intTimeOut60Oturum kayar süresi, dakika cinsinden.
stringBrowserId""Web çiftlikleri: imzalı bir biletin bağlı olduğu tarayıcı. DoconutFarmBinding.EnsureBrowserId ile ayarlayın (bkz. Oturumlar ve Güvenlik).
stringUserId""Web çiftlikleri: bir biletin bağlı olduğu oturum açmış kullanıcı, DoconutFarmBinding.ResolveUserId üzerinden.
intImageResolution0Eski. Bunun yerine format yapılandırmasında ImageResolution ayarlayın.
boolIsSecuredtrueAyrılmış; uygulanmaz. Erişim kontrolü DoconutOptions.UnsafeMode'dur.
boolIsWebFarm / string WebFarmPathfalse / ""Klasik paketten taşınan kod için tutulur. Çiftlik modunu açmazlar — AddDoconutDistributed yapar.
boolEditModefalseAyrı dağıtılan editör için ayrılmış; false bırakın.

Özel Filigran

DocOptions.Watermark altı tilde ile ayrılmış alan alır. İsteğe bağlı bir başlangıç ^, 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
Başlangıç ^^İsteğe bağlı tüm köşeler düzeni. Olmazsa, normal yerleşim kullanılır.
MetinConfidentialHer sayfada çizilen metin. Boş olmamalıdır.
RenkRedAdlandırılmış bir renk.
YazıBoyutu24Yazı tipi boyutu; geçersiz sayısal giriş varsayılan değere geri döner.
YazıTipiVerdanaYazı tipi ailesi. Sunucuda yüklü olmalıdır — Windows Server, bir masaüstüne göre daha az yazı tipine sahiptir.
Opaklık800 ile 255 arasında. Ayrıştırılabilmelidir.
Açı-45Derece cinsinden döndürme; geçersiz sayısal giriş varsayılan değere geri döner.

Parçalayıcı, isteğe bağlı ^ sonrasında tam olarak altı alan bekler. Geçersiz bir tanım, sessizce kaybolmak yerine görünür bir Invalid Watermark metniyle değiştirilir.

Lisans Kararı

Lisans durumuSağlanan özel değerİşlenen 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 lisansıHayırTemiz sayfa
Etkin Geçici/Demo lisansıEvetÖzel filigran
Eksik, reddedilmiş, süresi dolmuş, yanlış sürüm veya geçersiz alan adı lisansıHerhangiDeğerlendirme filigranı; özel değer bunu değiştirmez

Aynı karar, sunulan sayfalara ve açıklama dışa aktarımlarına da uygulanır. Özel bir filigran, lisanslı bir uygulamanın özelliğidir, değerlendirme filigranını değiştirme yolu değildir.

Açıklamalar API'si

Sunucu tarafı açıklama yükleme ve dışa aktarma. Adım adım kılavuz Açıklamalar içinde.

ÜyeAmaç
AnnotationManager GetAnnotationManager(string token)Açık oturumun sayfa boyutlarına bağlı yöneticisi
AnnotationManager GetAnnotationManager(string token, int pageWidth, int pageHeight)Açık sayfa boyutlarıyla yöneticisi
AnnotationManager GetAnnotationManager(int pageWidth, int pageHeight)Oturuma bağımlı olmayan 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ış zarfı 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)Açıklamaları gömülü sayfa başı PNG'lerin ZIP'i

DICOM meta verileri

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

Bu pakette her zaman null döner ve widget'ın meta veri isteği 501 Not Implemented yanıtını verir: DICOM etiketlerini okuma .NET Framework'ta mevcut değildir. DICOM görüntüleme — sayfalar, çerçeveler ve animasyon — çalışır. Bkz. DICOM Eklentisi.

Kaynak yardımcıları — ReferenceCss / ReferenceScripts

Kaynak modülünün DoconutOptions.ResourcesPath altında sunduğu kaynaklar için <link> ve <script> etiketlerini bağımlılık sırasına göre oluşturur. Lisans kısıtlamalı özelliklerin (Search, Annotation) dosyaları yalnızca lisans izin verdiğinde oluşturulur.

text
string ReferenceCss(CssConfig? config = null)       // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)
bool IsSearchEnabled { get; }                       // license state, for guarding ribbon init code
bool IsAnnotationEnabled { get; }

CssConfig bayrakları: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (arama kısıtlamalı), IncludeAnnotationCss (yorumlama kısıtlamalı).

ScriptConfig bayrakları: IncludeJQuery (diğerlerinin hepsi için gereklidir), IncludeBootstrap, IncludeViewerScripts (temel viewer betikleri), IncludeSearchScripts ve IncludeSearchBar (arama kısıtlamalı), IncludeAnnotationScripts ve IncludeAnnotationBar (yorumlama kısıtlamalı).

İkisi de HTML döndürür: MVC 5'te @Html.Raw(...) ile yazın (denetleyicide üretin — görünümlerde @inject yok) veya Web Forms'ta <%= %> kullanın. Hızlı Başlangıç ikisini de gösterir.

RenderViewer

text
string RenderViewer(string elementId, string token, ViewerConfig? config = null)

elementId kimliğine sahip öğe üzerinde widget'ı başlatan ve belgeyi gösteren bir <script> bloğu döndürür: docViewer({...}) ViewerConfig'ten (varsayılan: BasePath: '/', ResPath: 'doconut-res/images') oluşturulur, ardından .View(token). Viewer betiklerinden sonra yazın. Oluşturulan betik viewer nesnesine referans tutmaz, bu yüzden kendi araç çubuğuna sahip bir sayfa widget'ı elle başlatmalıdır. Bkz. ViewerConfig.

Web çiftliği

string? AccessToken dağıtılmış mod aktif olduğunda ve UnsafeMode false olduğunda en son açma işleminde verilen imzalı bileti tutar; tek bir sunucuda null olur. Bu token ile widget'a gönderin: objViewer.View(token, access).

Bu sayfa yardımcı oldu mu?