Prohlížeč
Hlavní třída prohlížeče dokumentů
Viewer (namespace Doconut) je veřejný vstupní bod pro otevírání dokumentů z Razor stránek, MVC kontrolerů, Blazor komponent nebo minimálních API. Je sealed, registrován jako transient služba pomocí AddDoconut(), a získává se pomocí injekce do konstruktoru — nikdy jej neinstanciujte přímo.
Viewer neuchovává žádný stav na požadavek a úmyslně neimplementuje IDisposable: relace dokumentů žijí nezávisle v cache relací, takže uvolnění služby by nikdy nemohlo ukončit otevřený dokument (viz Základní pojmy → Jak funguje prohlížeč).
OpenDocumentAsync
Otevře dokument a vrátí token relace, který klientský widget používá pro všechny následné požadavky.
| Přetížení | Použití |
|---|---|
Task<string> OpenDocumentAsync(string filePath, DocOptions? options = null, CancellationToken ct = default) | Otevírání z disku s automatickou detekcí formátu a výchozím nastavením formátu |
Task<string> OpenDocumentAsync(string filePath, BaseConfig? config, DocOptions? options = null, CancellationToken ct = default) | Potřebujete nastavení renderování pro konkrétní formát (PdfConfig, WordConfig, …) |
Task<string> OpenDocumentAsync(Stream stream, FileInfo fileInfo, BaseConfig? config = null, DocOptions? options = null, CancellationToken ct = default) | Dokument není soubor na disku (upload, databáze, blob). fileInfo musí nést správnou příponu — řídí detekci formátu |
// 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));Výjimky k ošetření:
LicenseException— nalezená licence je odmítnuta (zpráva nese důvod odmítnutí) nebo formát vyžaduje plugin, který již není povolen. Vypršení kalendáře bez zprávy o odmítnutí vede k vodotiskovému vykreslení místo vyhození výjimky.FormatNotSupportedException—Document format '<extension>' is not supported.InvalidDataException— obsah souboru je poškozený nebo neodpovídá jeho příponě.
CloseDocument
void CloseDocument(string token)Odstraní relaci z cache (okamžitě uvolní dokumentový engine), smaže bezpečnostní značku a odvolá přístupové oprávnění. Volitelné — posuvná expirace provádí stejný úklid — ale je doporučena pro velké dokumenty.
GetPageCount
int GetPageCount(string token)Celkový počet stránek otevřené relace. Vyhodí výjimku, pokud je token neznámý nebo vypršel.
DocOptions
Možnosti nezávislé na formátu při otevření (namespace Doconut):
| Typ | Vlastnost | Výchozí | Popis |
|---|---|---|---|
string | Password | "" | Heslo pro chráněné dokumenty (automaticky zkopírováno do konfigurace formátu). |
int | ImageResolution | 0 | Zastaralé. Uchováváno jen pro kompatibilitu — nastavte ImageResolution v konfiguraci formátu místo toho. |
string | Watermark | "" | Vlastní text vodotisku kreslený na vykreslených stránkách. Formát řetězce: "^Text~Color~FontSize~FontName~Opacity~Angle", např. "^Sample Copy~Red~24~Verdana~80~-45". |
int | TimeOut | 60 | Posuvná expirace relace v minutách. |
bool | IsSecured | true | Momentálně nevymahatelné — rezervováno. Vazba tokenu je řízena globálně pomocí DoconutOptions.UnsafeMode (viz Základní pojmy → Relace a zabezpečení). |
Třída také vystavuje specializované vlastnosti, které jsou úmyslně mimo běžný jednojádrový tok prohlížení:
| Typ | Vlastnost | Výchozí | Popis |
|---|---|---|---|
bool | IsWebFarm | false | Označuje operaci otevření jako scénář web-farmy. Používejte pouze s odpovídající sdílenou úložištěm/architekturou relací. |
string | WebFarmPath | "" | Sdílená cesta používaná specializovaným pracovním tokem web-farmy. Prázdná v běžném jednojádrovém prohlížeči. |
bool | EditMode | false | Rezervováno pro samostatně distribuovaný pracovní tok Editoru; ponechte false pro standardní prohlížeč. |
Custom watermark
DocOptions.Watermark používá šest polí oddělených vlnkou. Volitelný úvodní znak ^ požaduje rozložení po všech rozích:
^Text~Color~FontSize~FontName~Opacity~Anglestring token = await viewer.OpenDocumentAsync(
path,
new PdfConfig(),
new DocOptions
{
Watermark = "^Confidential~Red~24~Verdana~80~-45",
TimeOut = 30
});| Pole | Příklad | Význam |
|---|---|---|
Úvodní ^ | ^ | Volitelné rozložení po všech rozích. Bez něj se použije běžné umístění vodotisku. |
| Text | Confidential | Text vykreslený na každé stránce. Nesmí být prázdný. |
| Color | Red | Název barvy, který rozumí vykreslovací vrstva. |
| FontSize | 24 | Velikost písma; neplatný číselný vstup se vrátí k výchozímu nastavení rendereru. |
| FontName | Verdana | Požadovaná rodina písma. Ujistěte se, že je nainstalována v prostředí nasazení. |
| Opacity | 80 | Hodnota bajtu od 0 do 255. Musí se úspěšně parsovat. |
| Angle | -45 | Úhel otočení ve stupních; neplatný číselný vstup se vrátí k výchozímu nastavení. |
Parser očekává přesně šest polí po volitelném ^. Neplatná definice je nahrazena viditelným Invalid Watermark fallbackem SDK místo tichého zmizení.
Rozhodnutí o licenci
| Stav licence | Vlastní hodnota zadána | Výsledek renderování |
|---|---|---|
| Platná placená licence pro prohlížeč | Ne | Čistá stránka |
| Platná placená licence pro prohlížeč | Ano | Vlastní vodotisk |
| Aktivní dočasná/Demo základní licence pro prohlížeč | Ne | Čistá základní stránka prohlížeče |
| Aktivní dočasná/Demo základní licence pro prohlížeč | Ano | Vlastní vodotisk, pokud se použije čistá základní cesta prohlížeče |
| Chybějící, odmítnutá, prošlá, špatná verze nebo neplatná doména licence | Jakákoliv | Vynucovací/evaluační vodotisk; vlastní hodnota jej nepřepíše |
| Plugin renderování pod evaluačními pravidly | Jakákoliv | Evaluační vodotisk |
Stejné rozhodnutí se aplikuje na servírované obrázky stránek a exporty anotací. Výstup animovaného GIFu je razítkován snímek po snímku. Vlastní vodotisk je tedy licencovanou funkcí aplikace, nikoli způsobem, jak nahradit nebo potlačit evaluační vodotisk.
Annotations API
Načítání a export anotací na straně serveru. Kompletní průvodce je v Průvodci → Anotace; rozhraní je následující:
| Člen | Účel |
|---|---|
AnnotationManager GetAnnotationManager(string token) | Správce vázaný na rozměry stránek otevřené relace |
AnnotationManager GetAnnotationManager(string token, int pageWidth, int pageHeight) | Správce s explicitními rozměry stránky |
AnnotationManager GetAnnotationManager(int pageWidth, int pageHeight) | Správce nezávislý na relaci |
void LoadAnnotationData(string token, AnnotationManager manager) | Načte anotace vytvořené v C# do relace |
void LoadAnnotationData(string token, string annotationData) | Načte anotace z kódovaného page/Base64 obálky vrácené metodou AnnotationManager.GetAnnotationData() |
void LoadAnnotationXML(string token, XmlDocument annotationXml) | Načte anotace z XML |
XmlDocument GetAnnotationXML(string token) | Exportuje anotace relace jako XML |
Task<byte[]> ExportAnnotationsToPdfAsync(string token, int zoom = 100, CancellationToken ct = default) | PDF s vypečenými anotacemi |
Task<int> ExportAnnotationsToPngAsync(…) | PNG soubory s vypečenými anotacemi |
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default) | ZIP soubor s PNG stránkami s vypečenými anotacemi |
DICOM metadata
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Metoda existuje pro sladění API, ale .NET 6 DICOM prohlížeč nemůže poskytnout technické značky. Vrací null pro DICOM i ne‑DICOM relace; u DICOM relace také zapisuje jednorázové varování vysvětlující omezení platformy. Rendering stránek, snímků a animací zůstává podporován.
Resource helpers — ReferenceCss / ReferenceScripts
Vygeneruje <link>/<script> značky pro vložené zdroje poskytované UseDoconutResources(), ve správném pořadí závislostí. Balíčky pro funkce pod licencí, jako je vyhledávání a anotace, jsou emitovány pouze když licence umožňuje, čímž se UI klienta shoduje s chováním serveru.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)Příznaky CssConfig: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (vyhledávání pod licencí), IncludeAnnotationCss (anotace pod licencí).
Příznaky ScriptConfig: IncludeJQuery (vyžadováno všemi ostatními), IncludeBootstrap, IncludeViewerScripts (core: docViewer.js + splitter + links), IncludeSearchScripts a IncludeSearchBar (vyhledávání pod licencí), IncludeAnnotationScripts a IncludeAnnotationBar (anotace pod licencí).
@inject Doconut.Viewer Viewer
@Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true }))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeViewerScripts = true }))Byla tato stránka užitečná?