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:
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ü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‑ö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 |
// 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:
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
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ı
| Üye | Dö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 | Özellik | Varsayılan | Açıklama |
|---|---|---|---|
string | Password | "" | Korunan belgeler için şifre (format yapılandırmasına otomatik olarak kopyalanır). |
string | Watermark | "" | İşlenmiş sayfalara çizilen özel filigran metni — aşağıya bakın. |
int | TimeOut | 60 | Oturum kayar süresi, dakika cinsinden. |
string | BrowserId | "" | Web çiftlikleri: imzalı bir biletin bağlı olduğu tarayıcı. DoconutFarmBinding.EnsureBrowserId ile ayarlayın (bkz. Oturumlar ve Güvenlik). |
string | UserId | "" | Web çiftlikleri: bir biletin bağlı olduğu oturum açmış kullanıcı, DoconutFarmBinding.ResolveUserId üzerinden. |
int | ImageResolution | 0 | Eski. Bunun yerine format yapılandırmasında ImageResolution ayarlayın. |
bool | IsSecured | true | Ayrılmış; uygulanmaz. Erişim kontrolü DoconutOptions.UnsafeMode'dur. |
bool | IsWebFarm / string WebFarmPath | false / "" | Klasik paketten taşınan kod için tutulur. Çiftlik modunu açmazlar — AddDoconutDistributed yapar. |
bool | EditMode | false | Ayrı 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~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öşeler düzeni. Olmazsa, normal yerleşim kullanılır. |
| Metin | Confidential | Her sayfada çizilen metin. Boş olmamalıdır. |
| Renk | Red | Adlandırılmış bir renk. |
| YazıBoyutu | 24 | Yazı tipi boyutu; geçersiz sayısal giriş varsayılan değere geri döner. |
| YazıTipi | Verdana | Yazı tipi ailesi. Sunucuda yüklü olmalıdır — Windows Server, bir masaüstüne göre daha az yazı tipine sahiptir. |
| Opaklık | 80 | 0 ile 255 arasında. Ayrıştırılabilmelidir. |
| Açı | -45 | Derece 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 durumu | Sağlanan özel değer | İşlenen 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 lisansı | Hayır | Temiz sayfa |
| Etkin Geçici/Demo lisansı | Evet | Özel filigran |
| Eksik, reddedilmiş, süresi dolmuş, yanlış sürüm veya geçersiz alan adı lisansı | Herhangi | Değ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.
| Üye | Amaç |
|---|---|
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
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.
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
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?